Skip to content

Instantly share code, notes, and snippets.

@coderdiaz
Forked from Braunson/dataTables.less
Last active August 29, 2015 14:23
Show Gist options
  • Save coderdiaz/25c50455ce79d44150a2 to your computer and use it in GitHub Desktop.
Save coderdiaz/25c50455ce79d44150a2 to your computer and use it in GitHub Desktop.
//
// Colour customisation
//
// Border between the header (and footer) and the table body
@table-header-border: 1px solid #111111;
// Border of rows / cells
@table-body-border: 1px solid #dddddd;
// Row background colour (hover, striping etc are all based on this colour and
// calculated automatically)
@table-row-background: #ffffff;
// Row colour, when selected (tr.selected)
@table-row-selected: #b0bed9;
// Text colour of the interaction control elements (info, filter, paging etc)
@table-control-color: #333333;
// Highlight colour of the paging button for the current page
@table-paging-button-active: #dcdcdc;
// Hover colour of paging buttons on mouse over
@table-paging-button-hover: #111111;
// Colour to use when shading
@table-shade: #000;
//
// Functions / mixins
//
.gradient(@from, @to) {
background-color: @from;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,@from), color-stop(100%,@to)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, @from 0%, @to 100%); /* Chrome10+,Safari5.1+ */
background: -moz-linear-gradient(top, @from 0%, @to 100%); /* FF3.6+ */
background: -ms-linear-gradient(top, @from 0%, @to 100%); /* IE10+ */
background: -o-linear-gradient(top, @from 0%, @to 100%); /* Opera 11.10+ */
background: linear-gradient(to bottom, @from 0%, @to 100%); /* W3C */
}
.rgbaIn(@color, @opacity : 1){
@result: rgba( red(@color), green(@color), blue(@color), @opacity );
}
/*
* Table styles
*/
table.dataTable {
width: 100%;
margin: 0 auto;
clear: both;
border-collapse: separate;
border-spacing: 0;
/*
* Header and footer styles
*/
thead,
tfoot {
th {
font-weight: bold;
}
}
thead th,
thead td {
padding: 10px 18px;
border-bottom: @table-header-border;
&:active {
outline: none;
}
}
tfoot th,
tfoot td {
padding: 10px 18px 6px 18px;
border-top: @table-header-border;
}
// Sorting
thead {
.sorting_asc,
.sorting_desc,
.sorting {
cursor: pointer;
*cursor: hand;
}
.sorting {
background: url('../../assets/images/sort_both.png') no-repeat center right;
}
.sorting_asc {
background: url('../../assets/images/sort_asc.png') no-repeat center right;
}
.sorting_desc {
background: url('../../assets/images/sort_desc.png') no-repeat center right;
}
.sorting_asc_disabled {
background: url('../../assets/images/sort_asc_disabled.png') no-repeat center right;
}
.sorting_desc_disabled {
background: url('../../assets/images/sort_desc_disabled.png') no-repeat center right;
}
}
/*
* Body styles
*/
tbody {
tr {
background-color: @table-row-background;
&.selected {
background-color: @table-row-selected;
}
}
th,
td {
padding: 8px 10px;
}
}
// Stripe classes - add "row-border" class to the table to activate
&.row-border tbody,
&.display tbody {
th, td {
border-top: @table-body-border;
}
tr:first-child th,
tr:first-child td {
border-top: none;
}
}
// Stripe classes - add "cell-border" class to the table to activate
&.cell-border tbody {
th, td {
border-top: @table-body-border;
border-right: @table-body-border;
}
tr th:first-child,
tr td:first-child {
border-left: @table-body-border;
}
tr:first-child th,
tr:first-child td {
border-top: none;
}
}
// Stripe classes - add "stripe" class to the table to activate
&.stripe tbody,
&.display tbody {
tr.odd {
background-color: mix(@table-shade, @table-row-background, 2.35%); // shade by f9
&.selected {
background-color: mix(@table-shade, @table-row-selected, 2.35%);
}
}
}
// Hover classes - add "hover" class to the table to activate
&.hover tbody,
&.display tbody {
tr:hover,
tr.odd:hover,
tr.even:hover {
background-color: mix(@table-shade, @table-row-background, 3.6%); // shade by f5
&.selected {
background-color: mix(@table-shade, @table-row-selected, 3.6%);
}
}
}
// Sort column highlighting - add "hover" class to the table to activate
&.order-column,
&.display {
tbody {
tr>.sorting_1,
tr>.sorting_2,
tr>.sorting_3 {
background-color: mix(@table-shade, @table-row-background, 2%); // shade by fa
}
tr.selected>.sorting_1,
tr.selected>.sorting_2,
tr.selected>.sorting_3 {
background-color: mix(@table-shade, @table-row-selected, 2%);
}
}
}
&.display tbody,
&.order-column.stripe tbody {
tr.odd {
>.sorting_1 { background-color: mix(@table-shade, @table-row-background, 5.4%); } // shade by f1
>.sorting_2 { background-color: mix(@table-shade, @table-row-background, 4.7%); } // shade by f3
>.sorting_3 { background-color: mix(@table-shade, @table-row-background, 3.9%); } // shade by f5
&.selected {
>.sorting_1 { background-color: mix(@table-shade, @table-row-selected, 5.4%); }
>.sorting_2 { background-color: mix(@table-shade, @table-row-selected, 4.7%); }
>.sorting_3 { background-color: mix(@table-shade, @table-row-selected, 3.9%); }
}
}
tr.even {
>.sorting_1 { background-color: mix(@table-shade, @table-row-background, 2%); } // shade by fa
>.sorting_2 { background-color: mix(@table-shade, @table-row-background, 1.2%); } // shade by fc
>.sorting_3 { background-color: mix(@table-shade, @table-row-background, 0.4%); } // shade by fe
&.selected {
>.sorting_1 { background-color: mix(@table-shade, @table-row-selected, 2%); }
>.sorting_2 { background-color: mix(@table-shade, @table-row-selected, 1.2%); }
>.sorting_3 { background-color: mix(@table-shade, @table-row-selected, 0.4%); }
}
}
}
&.display tbody,
&.order-column.hover tbody {
tr:hover,
tr.odd:hover,
tr.even:hover {
>.sorting_1 { background-color: mix(@table-shade, @table-row-background, 8.2%); } // shade by ea
>.sorting_2 { background-color: mix(@table-shade, @table-row-background, 7.5%); } // shade by ec
>.sorting_3 { background-color: mix(@table-shade, @table-row-background, 6.3%); } // shade by ef
&.selected {
>.sorting_1 { background-color: mix(@table-shade, @table-row-selected, 8.2%); }
>.sorting_2 { background-color: mix(@table-shade, @table-row-selected, 7.5%); }
>.sorting_3 { background-color: mix(@table-shade, @table-row-selected, 6.3%); }
}
}
}
&.no-footer {
border-bottom: @table-header-border;
}
&.nowrap {
th, td {
white-space: nowrap;
}
}
&.compact {
thead th,
thead td {
padding: 5px 9px;
}
tfoot th,
tfoot td {
padding: 5px 9px 3px 9px;
}
tbody th,
tbody td {
padding: 4px 5px;
}
}
// Typography
th.dt-left,
td.dt-left {
text-align: left;
}
th.dt-center,
td.dt-center,
td.dataTables_empty {
text-align: center;
}
th.dt-right,
td.dt-right {
text-align: right;
}
th.dt-justify,
td.dt-justify {
text-align: justify;
}
th.dt-nowrap,
td.dt-nowrap {
white-space: nowrap;
}
thead,
tfoot {
th.dt-head-left,
td.dt-head-left {
text-align: left;
}
th.dt-head-center,
td.dt-head-center{
text-align: center;
}
th.dt-head-right,
td.dt-head-right {
text-align: right;
}
th.dt-head-justify,
td.dt-head-justify {
text-align: justify;
}
th.dt-head-nowrap,
td.dt-head-nowrap {
white-space: nowrap;
}
}
tbody {
th.dt-body-left,
td.dt-body-left {
text-align: left;
}
th.dt-body-center,
td.dt-body-center {
text-align: center;
}
th.dt-body-right,
td.dt-body-right {
text-align: right;
}
th.dt-body-justify,
td.dt-body-justify {
text-align: justify;
}
th.dt-body-nowrap,
td.dt-body-nowrap {
white-space: nowrap;
}
}
}
// Its not uncommon to use * {border-box} now, but it messes up the column width
// calculations, so use content-box for the table and cells
table.dataTable,
table.dataTable th,
table.dataTable td {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
/*
* Control feature layout
*/
.dataTables_wrapper {
position: relative;
clear: both;
*zoom: 1;
// Page length options
.dataTables_length {
float: left;
padding: 10px 18px;
}
// Filtering input
.dataTables_filter {
float: right;
text-align: right;
padding: 10px 18px;
input {
margin-left: 0.5em;
}
}
// Table info
.dataTables_info {
clear: both;
float: left;
//padding-top: 0.755em;
padding: 10px 18px;
//display:none;
}
// Paging
.dataTables_paginate {
float: right;
text-align: right;
//padding-top: 0.25em;
padding: 10px 18px;
.paginate_button {
box-sizing: border-box;
display: inline-block;
min-width: 1.5em;
padding: 0.5em 1em;
margin-left: 2px;
text-align: center;
text-decoration: none !important;
cursor: pointer;
*cursor: hand;
color: @table-control-color !important;
border: 1px solid transparent;
&.current,
&.current:hover {
color: @table-control-color !important;
border: 1px solid darken( @table-paging-button-active, 7% );
.gradient( lighten(@table-paging-button-active, 28%), @table-paging-button-active );
}
&.disabled,
&.disabled:hover,
&.disabled:active {
cursor: default;
color: #666 !important;
border: 1px solid transparent;
background: transparent;
box-shadow: none;
}
&:hover {
color: white !important;
border: 1px solid @table-paging-button-hover;
.gradient( lighten(@table-paging-button-hover, 28%), @table-paging-button-hover );
}
&:active {
outline: none;
.gradient( lighten(@table-paging-button-hover, 10%), darken(@table-paging-button-hover, 2%) );
box-shadow: inset 0 0 3px #111;
}
}
}
// Processing
.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 40px;
margin-left: -50%;
margin-top: -25px;
padding-top: 20px;
text-align: center;
font-size: 1.2em;
background-color: white;
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgbaIn(@table-row-background, 0)), color-stop(25%,rgbaIn(@table-row-background, 0.9)), color-stop(75%,rgbaIn(@table-row-background, 0.9)), color-stop(100%,rgbaIn(255,255,255,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgbaIn(@table-row-background, 0) 0%, rgbaIn(@table-row-background, 0.9) 25%, rgbaIn(@table-row-background, 0.9) 75%, rgbaIn(@table-row-background, 0) 100%); /* Chrome10+,Safari5.1+ */
background: -moz-linear-gradient(left, rgbaIn(@table-row-background, 0) 0%, rgbaIn(@table-row-background, 0.9) 25%, rgbaIn(@table-row-background, 0.9) 75%, rgbaIn(@table-row-background, 0) 100%); /* FF3.6+ */
background: -ms-linear-gradient(left, rgbaIn(@table-row-background, 0) 0%, rgbaIn(@table-row-background, 0.9) 25%, rgbaIn(@table-row-background, 0.9) 75%, rgbaIn(@table-row-background, 0) 100%); /* IE10+ */
background: -o-linear-gradient(left, rgbaIn(@table-row-background, 0) 0%, rgbaIn(@table-row-background, 0.9) 25%, rgbaIn(@table-row-background, 0.9) 75%, rgbaIn(@table-row-background, 0) 100%); /* Opera 11.10+ */
background: linear-gradient(to right, rgbaIn(@table-row-background, 0) 0%, rgbaIn(@table-row-background, 0.9) 25%, rgbaIn(@table-row-background, 0.9) 75%, rgbaIn(@table-row-background, 0) 100%); /* W3C */
}
.dataTables_length,
.dataTables_filter,
.dataTables_info,
.dataTables_processing,
.dataTables_paginate {
color: @table-control-color;
}
// Scrolling
.dataTables_scroll {
clear: both;
div.dataTables_scrollBody {
*margin-top: -1px;
-webkit-overflow-scrolling: touch;
th > div.dataTables_sizing,
td > div.dataTables_sizing {
// Hide the element used to wrap the content in the header for
// the body scrolling table
height: 0;
overflow: hidden;
margin: 0 !important;
padding: 0 !important;
}
}
}
&.no-footer {
.dataTables_scrollBody {
border-bottom: @table-header-border;
}
div.dataTables_scrollHead table,
div.dataTables_scrollBody table {
border-bottom: none;
}
}
// Self clear the wrapper
&:after {
visibility: hidden;
display: block;
content: "";
clear: both;
height: 0;
}
zoom: 1; // Poor old IE
}
// Collapse the two column display of the control elements when the screen is
// small - the info and paging control get collapsed first as they are wider,
// and then the length and filter controls
@media screen and (max-width: 767px) {
.dataTables_wrapper {
.dataTables_info,
.dataTables_paginate {
float: none;
text-align: center;
}
.dataTables_paginate {
margin-top: 0.5em;
}
}
}
@media screen and (max-width: 640px) {
.dataTables_wrapper {
.dataTables_length,
.dataTables_filter {
float: none;
text-align: center;
}
.dataTables_filter {
margin-top: 0.5em;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment