Bootstrap Data Table
Data Table
by Hayriye Aydin
HTML
<script src="https://code.jquery.com/jquery-3.4.1.slim.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css">
<!--
Bootstrap docs: https://getbootstrap.com/docs
-->
<span class="tooltip" title="A nice tooltip">Hover on me</span>
<br>
<br>
<br>
<br>
<br>
<div class="container wrapper">
<table class="table table-bordered table-hover" cellspacing="0" width="100%">
<thead>
<tr>
<th class="col-md-2">Name</th>
<th class="col-md-2">Position</th>
<th class="col-md-2">Office</th>
<th class="col-md-2">Age</th>
<th class="col-md-2">Start date</th>
<th class="col-md-2">Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Airi Satou</td>
<td class="highlight">SupercalifragilisticexpialidociousSupercalifragilisticexpialidocious</td>
<td>Tokyo</td>
<td>33</td>
<td>2008/11/28</td>
<td>$162,700</td>
</tr>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>63</td>
...
CSS
.wrapper {
margin-top: 5vh;
}
.dataTables_filter {
float: right;
}
.table-hover > tbody > tr:hover {
background-color: #ccffff;
}
@media only screen and (min-width: 768px) {
.table {
table-layout: fixed;
max-width: 100% !important;
}
}
thead {
background: #ddd;
}
.table td:nth-child(2) {
overflow: hidden;
text-overflow: ellipsis;
}
.highlight {
background: #ffff99;
}
@media only screen and (max-width: 767px) {
/* Force table to not be like tables anymore */
table,
thead,
tbody,
th,
td,
tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
thead tr,
tfoot tr {
position: absolute;
top: -9999px;
left: -9999px;
}
td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50% !important;
}
td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
}
.table td:nth-child(1) {
background: #ccc;
height: 100%;
top: 0;
left: 0;
font-weight: bold;
}
/*
Label the data
*/
td:nth-of-type(1):before {
content: "Name";
}
td:nth-of-type(2):before {
content: "Position";
}
td:nth-of-type(3):before {
content: "Office";
}
td:nth-of-type(4):before {
content: "Age";
}
td:nth-of-type(5):before {
content: "Start date";
}
td:nth-of-type(6):before {
content: "Salary";
}
.dataTables_length {
display: none;
}
}
JavaScript
$(document).ready(function() {
$('.table').DataTable({
//disable sorting on last column
"columnDefs": [
{ "orderable": false, "targets": 5 }
],
language: {
//customize pagination prev and next buttons: use arrows instead of words
'paginate': {
'previous': '<span class="fa fa-chevron-left"></span>',
'next': '<span class="fa fa-chevron-right"></span>'
},
//customize number of elements to be displayed
"lengthMenu": 'Display <select class="form-control input-sm">'+
'<option value="10">10</option>'+
'<option value="20">20</option>'+
'<option value="30">30</option>'+
'<option value="40">40</option>'+
'<option value="50">50</option>'+
'<option value="-1">All</option>'+
'</select> results'
}
})
$("[rel='tooltip'], .tooltip").tooltip();
} );