bootstrap-less-port
Version:
A Less port of Bootstrap v4
206 lines (169 loc) • 3.98 kB
text/less
//
// Basic Bootstrap table
//
.table {
width: 100%;
margin-bottom: @spacer;
color: @table-color;
// LESS PORT: Less doesn’t strip “empty” property values so we have to check for a value first.
& when not (@table-bg = ~"") { background-color: @table-bg; } // Reset for nesting within parents with `background-color`.
th,
td {
padding: @table-cell-padding;
vertical-align: top;
border-top: @table-border-width solid @table-border-color;
}
thead th {
vertical-align: bottom;
border-bottom: (2 * @table-border-width) solid @table-border-color;
}
tbody + tbody {
border-top: (2 * @table-border-width) solid @table-border-color;
}
}
//
// Condensed table w/ half padding
//
.table-sm {
th,
td {
padding: @table-cell-padding-sm;
}
}
// Border versions
//
// Add or remove borders all around the table and between all the columns.
.table-bordered {
border: @table-border-width solid @table-border-color;
th,
td {
border: @table-border-width solid @table-border-color;
}
thead {
th,
td {
border-bottom-width: (2 * @table-border-width);
}
}
}
.table-borderless {
th,
td,
thead th,
tbody + tbody {
border: 0;
}
}
// Zebra-striping
//
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
.table-striped {
tbody tr:nth-of-type(@{table-striped-order}) {
background-color: @table-accent-bg;
}
}
// Hover effect
//
// Placed here since it has to come after the potential zebra striping
.table-hover {
tbody tr {
#hover({
color: @table-hover-color;
background-color: @table-hover-bg;
});
}
}
// Table backgrounds
//
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
each(@theme-colors, #(@value, @color) {
#table-row-variant(@color, theme-color-level(@color, @table-bg-level), theme-color-level(@color, @table-border-level));
});
#table-row-variant(active, @table-active-bg);
// Dark styles
//
// Same table markup, but inverted color scheme: dark background and light text.
.table {
.thead-dark {
th {
color: @table-dark-color;
background-color: @table-dark-bg;
border-color: @table-dark-border-color;
}
}
.thead-light {
th {
color: @table-head-color;
background-color: @table-head-bg;
border-color: @table-border-color;
}
}
}
.table-dark {
color: @table-dark-color;
background-color: @table-dark-bg;
th,
td,
thead th {
border-color: @table-dark-border-color;
}
&.table-bordered {
border: 0;
}
&.table-striped {
tbody tr:nth-of-type(@{table-striped-order}) {
background-color: @table-dark-accent-bg;
}
}
&.table-hover {
tbody tr {
#hover({
color: @table-dark-hover-color;
background-color: @table-dark-hover-bg;
});
}
}
}
// Responsive tables
//
// Generate series of `.table-responsive-*` classes for configuring the screen
// size of where your table will overflow.
//.table-responsive {
// @each $breakpoint in map-keys($grid-breakpoints) {
// $next: breakpoint-next($breakpoint, $grid-breakpoints);
// $infix: breakpoint-infix($next, $grid-breakpoints);
//
// &#{$infix} {
// @include media-breakpoint-down($breakpoint) {
// display: block;
// width: 100%;
// overflow-x: auto;
// -webkit-overflow-scrolling: touch;
//
// // Prevent double border on horizontal scroll due to use of `display: block;`
// > .table-bordered {
// border: 0;
// }
// }
// }
// }
//}
each(map-keys(@grid-breakpoints), #(@breakpoint) {
.table-responsive {
@next: breakpoint-next(@breakpoint, @grid-breakpoints);
@infix: breakpoint-infix(@next, @grid-breakpoints);
&@{infix} {
#media-breakpoint-down(@breakpoint, {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
// Prevent double border on horizontal scroll due to use of `display: block;`
> .table-bordered {
border: 0;
}
});
}
}
});