From d089a683c8f11c4f4b133340d29e7d88589478c2 Mon Sep 17 00:00:00 2001 From: Martijn Cuppens Date: Tue, 24 Mar 2020 15:00:00 +0100 Subject: [PATCH] Prevent nested tables style leaks --- scss/_mixins.scss | 2 +- scss/_reboot.scss | 11 + scss/_tables.scss | 159 ++-- scss/_variables.scss | 44 +- scss/mixins/_table-row.scss | 39 - scss/mixins/_table-variants.scss | 21 + site/content/docs/4.3/content/tables.md | 1016 ++++++++++------------ site/content/docs/4.3/migration.md | 5 +- site/layouts/partials/table-content.html | 27 + site/layouts/shortcodes/table.html | 30 + 10 files changed, 642 insertions(+), 712 deletions(-) delete mode 100644 scss/mixins/_table-row.scss create mode 100644 scss/mixins/_table-variants.scss create mode 100644 site/layouts/partials/table-content.html create mode 100644 site/layouts/shortcodes/table.html diff --git a/scss/_mixins.scss b/scss/_mixins.scss index 5a04655d54..b48761de9e 100644 --- a/scss/_mixins.scss +++ b/scss/_mixins.scss @@ -27,7 +27,7 @@ @import "mixins/lists"; @import "mixins/list-group"; @import "mixins/forms"; -@import "mixins/table-row"; +@import "mixins/table-variants"; // Skins @import "mixins/background-variant"; diff --git a/scss/_reboot.scss b/scss/_reboot.scss index c6b10d59fe..4c5dfcba41 100644 --- a/scss/_reboot.scss +++ b/scss/_reboot.scss @@ -374,6 +374,17 @@ th { text-align: -webkit-match-parent; // 2 } +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + // Forms // diff --git a/scss/_tables.scss b/scss/_tables.scss index 253282c98d..4969d89496 100644 --- a/scss/_tables.scss +++ b/scss/_tables.scss @@ -3,29 +3,45 @@ // .table { + --table-bg: #{$table-bg}; + --table-accent-bg: transparent; + --table-striped-color: #{$table-striped-color}; + --table-striped-bg: #{$table-striped-bg}; + --table-active-color: #{$table-active-color}; + --table-active-bg: #{$table-active-bg}; + --table-hover-color: #{$table-hover-color}; + --table-hover-bg: #{$table-hover-bg}; + width: 100%; margin-bottom: $spacer; color: $table-color; vertical-align: $table-cell-vertical-align; - background-color: $table-bg; // Reset for nesting within parents with `background-color`. + border-color: $table-border-color; - th, - td { + // Target th & td + // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class. + // We use the universal selectors here to simplify the selector (else we would need 6 different selectors). + // Another advantage is that this generates less code and makes the selector less specific making it easier to override. + // stylelint-disable-next-line selector-max-universal + > :not(caption) > * > * { padding: $table-cell-padding; - border-bottom: $table-border-width solid $table-border-color; + background-color: var(--table-bg); + background-image: linear-gradient(var(--table-accent-bg), var(--table-accent-bg)); + border-bottom-width: $table-border-width; } - tbody { + > tbody { vertical-align: inherit; } - thead th { + > thead { vertical-align: bottom; - border-bottom-color: $table-head-border-color; } - tbody + tbody { - border-top: (2 * $table-border-width) solid $table-border-color; + // Highlight border color between thead, tbody and tfoot. + // stylelint-disable-next-line selector-max-universal + > :not(:last-child) > :last-child > * { + border-bottom-color: currentColor; } } @@ -34,7 +50,9 @@ // Change placement of captions with a class // -.caption-top { caption-side: top; } +.caption-top { + caption-side: top; +} // @@ -42,8 +60,8 @@ // .table-sm { - th, - td { + // stylelint-disable-next-line selector-max-universal + > :not(caption) > * > * { padding: $table-cell-padding-sm; } } @@ -52,29 +70,28 @@ // Border versions // // Add or remove borders all around the table and between all the columns. +// +// When borders are added on all sides of the cells, the corners can render odd when +// these borders do not have the same color or if they are semi-transparent. +// Therefor we add top and border bottoms to the `tr`s and left and right borders +// to the `td`s or `th`s .table-bordered { - border: $table-border-width solid $table-border-color; + // stylelint-disable-next-line selector-max-universal + > :not(caption) > * { + border-width: $table-border-width 0; - th, - td { - border: $table-border-width solid $table-border-color; - } - - thead { - th, - td { - border-bottom-width: 2 * $table-border-width; + // stylelint-disable-next-line selector-max-universal + > * { + border-width: 0 $table-border-width; } } } .table-borderless { - th, - td, - thead th, - tbody + tbody { - border: 0; + // stylelint-disable-next-line selector-max-universal + > :not(caption) > * > * { + border-bottom-width: 0; } } @@ -83,92 +100,42 @@ // Default zebra-stripe styles (alternating gray and transparent backgrounds) .table-striped { - tbody tr:nth-of-type(#{$table-striped-order}) { - background-color: $table-accent-bg; + > tbody > tr:nth-of-type(#{$table-striped-order}) { + --table-accent-bg: var(--table-striped-bg); + color: var(--table-striped-color); } } +// Active table +// +// The `.table-active` class can be added to highlight rows or cells + +.table-active { + --table-accent-bg: var(--table-active-bg); + color: var(--table-active-color); +} // 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; - } + > tbody > tr:hover { + --table-accent-bg: var(--table-hover-bg); + color: var(--table-hover-color); } } -// Table backgrounds +// Table variants // -// Exact selectors below required to override `.table-striped` and prevent -// inheritance to nested tables. +// Table variants set the table cell backgrounds, border colors +// and the colors of the striped, hovered & active tables -@each $color, $value in $theme-colors { - @include table-row-variant($color, color-level($value, $table-bg-level), color-level($value, $table-border-level)); +@each $color, $value in $table-variants { + @include table-variant($color, $value); } -@include table-row-variant(active, $table-active-bg); - - -// Dark styles -// -// Same table markup, but inverted color scheme: dark background and light text. - -// stylelint-disable-next-line no-duplicate-selectors -.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 diff --git a/scss/_variables.scss b/scss/_variables.scss index fb71319866..9a2348df66 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -465,38 +465,48 @@ $mark-bg: #fcf8e3 !default; // // Customizes the `.table` component with basic values, each used across all table variations. +// scss-docs-start table-variables $table-cell-padding: .5rem !default; $table-cell-padding-sm: .25rem !default; $table-cell-vertical-align: top !default; $table-color: $body-color !default; -$table-bg: null !default; -$table-accent-bg: rgba($black, .05) !default; -$table-hover-color: $table-color !default; -$table-hover-bg: rgba($black, .075) !default; -$table-active-bg: $table-hover-bg !default; +$table-bg: transparent !default; +$table-striped-color: $table-color !default; +$table-striped-bg-factor: .05 !default; +$table-striped-bg: rgba($black, $table-striped-bg-factor) !default; + +$table-active-color: $table-color !default; +$table-active-bg-factor: .1 !default; +$table-active-bg: rgba($black, $table-active-bg-factor) !default; + +$table-hover-color: $table-color !default; +$table-hover-bg-factor: .075 !default; +$table-hover-bg: rgba($black, $table-hover-bg-factor) !default; + +$table-border-factor: .1 !default; $table-border-width: $border-width !default; $table-border-color: $border-color !default; -$table-head-bg: $gray-200 !default; -$table-head-color: $gray-700 !default; -$table-head-border-color: $gray-700 !default; - -$table-dark-color: $white !default; -$table-dark-bg: $gray-800 !default; -$table-dark-accent-bg: rgba($white, .05) !default; -$table-dark-hover-color: $table-dark-color !default; -$table-dark-hover-bg: rgba($white, .075) !default; -$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default; - $table-striped-order: odd !default; $table-caption-color: $text-muted !default; $table-bg-level: -9 !default; -$table-border-level: -6 !default; + +$table-variants: ( + "primary": color-level($primary, $table-bg-level), + "secondary": color-level($secondary, $table-bg-level), + "success": color-level($success, $table-bg-level), + "info": color-level($info, $table-bg-level), + "warning": color-level($warning, $table-bg-level), + "danger": color-level($danger, $table-bg-level), + "light": $light, + "dark": $dark, +) !default; +// scss-docs-end table-variables // Buttons + Forms diff --git a/scss/mixins/_table-row.scss b/scss/mixins/_table-row.scss deleted file mode 100644 index 517229e1a7..0000000000 --- a/scss/mixins/_table-row.scss +++ /dev/null @@ -1,39 +0,0 @@ -// Tables - -@mixin table-row-variant($state, $background, $border: null) { - // Exact selectors below required to override `.table-striped` and prevent - // inheritance to nested tables. - .table-#{$state} { - &, - > th, - > td { - background-color: $background; - } - - @if $border != null { - th, - td, - thead th, - tbody + tbody { - border-color: $border; - } - } - } - - // Hover states for `.table-hover` - // Note: this is not available for cells or rows within `thead` or `tfoot`. - .table-hover { - $hover-background: darken($background, 5%); - - .table-#{$state} { - &:hover { - background-color: $hover-background; - - > td, - > th { - background-color: $hover-background; - } - } - } - } -} diff --git a/scss/mixins/_table-variants.scss b/scss/mixins/_table-variants.scss new file mode 100644 index 0000000000..9fd066edbc --- /dev/null +++ b/scss/mixins/_table-variants.scss @@ -0,0 +1,21 @@ +// scss-docs-start table-variant +@mixin table-variant($state, $background) { + .table-#{$state} { + $color: color-contrast(opaque($body-bg, $background)); + $hover-bg: mix($color, $background, percentage($table-hover-bg-factor)); + $striped-bg: mix($color, $background, percentage($table-striped-bg-factor)); + $active-bg: mix($color, $background, percentage($table-active-bg-factor)); + + --table-bg: #{$background}; + --table-striped-bg: #{$striped-bg}; + --table-striped-color: #{color-contrast($striped-bg)}; + --table-active-bg: #{$active-bg}; + --table-active-color: #{color-contrast($active-bg)}; + --table-hover-bg: #{$hover-bg}; + --table-hover-color: #{color-contrast($hover-bg)}; + + color: $color; + border-color: mix($color, $background, percentage($table-border-factor)); + } +} +// scss-docs-end table-variant diff --git a/site/content/docs/4.3/content/tables.md b/site/content/docs/4.3/content/tables.md index 76b799fca3..bcf4007205 100644 --- a/site/content/docs/4.3/content/tables.md +++ b/site/content/docs/4.3/content/tables.md @@ -8,436 +8,15 @@ toc: true ## Overview -Due to the widespread use of `` elements across third-party widgets like calendars and date pickers, Bootstrap's tables are **opt-in**. Add the base class `.table` to any `
`, then extend with our optional modifier classes or custom styles. **All table styles are inherited in Bootstrap**, meaning any nested tables will be styled in the same manner as the parent. +Due to the widespread use of `
` elements across third-party widgets like calendars and date pickers, Bootstrap's tables are **opt-in**. Add the base class `.table` to any `
`, then extend with our optional modifier classes or custom styles. All table styles are not inherited in Bootstrap, meaning any nested tables can be styled independent from the parent. Using the most basic table markup, here's how `.table`-based tables look in Bootstrap. -{{< example >}} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-{{< /example >}} +{{< table class="table" simplified="false" >}} -## Options +## Variants -### Inverted - -You can also invert the colors—with light text on dark backgrounds—with `.table-dark`. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-{{< /example >}} - -### Striped rows - -Use `.table-striped` to add zebra-striping to any table row within the ``. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-{{< /example >}} - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-{{< /example >}} - -### Bordered - -Add `.table-bordered` for borders on all sides of the table and cells. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -### No borders - -Add `.table-borderless` for a table without borders. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -`.table-borderless` can also be used on dark tables. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -### Hoverable rows - -Add `.table-hover` to enable a hover state on table rows within a ``. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -### Small tables - -Add `.table-sm` to make any `.table` more compact by cutting all cell `padding` in half. - -{{< example >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-{{< /example >}} - -## Vertical alignment - -Table cells of `` are always vertical aligned to the bottom. Table cells in `` inherit their alignment from `` and are aligned to the the top by default. - -{{< example >}} -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Heading 1Heading 2Heading 3Heading 4
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableNulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowNulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell is aligned to the top.Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
- -{{< /example >}} - -### Variants - -Use contextual classes to color table rows or individual cells. +Use contextual classes to color tables, table rows or individual cells.
@@ -449,11 +28,6 @@ Use contextual classes to color table rows or individual cells. - - - - - @@ -473,18 +47,20 @@ Use contextual classes to color table rows or individual cells. {{< highlight html >}} - -... -{{< table.inline >}} +{{< table.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +
ActiveCellCell
Default Cell
...
+{{- end -}} +{{< /table.inline >}} + +{{< table.inline >}} {{- range (index $.Site.Data "theme-colors") }} ... {{- end -}} {{< /table.inline >}} - - ... -{{< table.inline >}} +{{< table.inline >}} {{- range (index $.Site.Data "theme-colors") }} ... {{- end -}} @@ -492,166 +68,261 @@ Use contextual classes to color table rows or individual cells. {{< /highlight >}} -Regular table background variants are not available with the dark table, however, you may use [text or background utilities]({{< docsref "/utilities/colors" >}}) to achieve similar styles. +{{< callout info >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} + +## Accented tables + +### Striped rows + +Use `.table-striped` to add zebra-striping to any table row within the ``. + +{{< table class="table table-striped" >}} + +These classes can also be added to table variants: + +{{< table class="table table-dark table-striped" >}} + +{{< table class="table table-success table-striped" >}} + +### Hoverable rows + +Add `.table-hover` to enable a hover state on table rows within a ``. + +{{< table class="table table-hover" >}} + +{{< table class="table table-dark table-hover" >}} + +These hoverable rows can also be combined with the striped variant: + +{{< table class="table table-striped table-hover" >}} + +### Active tables + +Highlight a table row or cell by adding a `.table-active` class.
- +
- - + + + - + - - + + + - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
#HeadingHeadingFirstLastHandle
1CellCellMarkOtto@mdo
2CellCellJacobThornton@fat
3CellCell
4CellCell
5CellCell
6CellCell
7CellCell
8CellCell
9CellCellLarry the Bird@twitter
{{< highlight html >}} - -... -... -... -... -... - - - - ... - ... - ... - ... - ... - + + + ... + + + + ... + + + ... + + + + + + + +
3Larry the Bird@twitter
{{< /highlight >}} -{{< callout info >}} -{{< partial "callout-warning-color-assistive-technologies.md" >}} -{{< /callout >}} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
-## Anatomy - -### Table head - -Similar to tables and dark tables, use the modifier classes `.thead-light` or `.thead-dark` to make ``s appear light or dark gray. - -{{< example >}} - - - - - - - - +{{< highlight html >}} +
#FirstLastHandle
+ + ... - - - - - + + ... - - - - + ... - - +
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe BirdLarry the Bird @twitter
+{{< /highlight >}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +## How do the variants and accented tables work? + +For the accented tables ([striped rows](#striped-rows), [hoverable rows](#hoverable-rows) and [active tables](#active-tables)), we used some techniques to make these effects work for all our [table variants](#variants): + +- First of all we set the background of a table cell with the `--table-bg` custom property. All table variants then set that custom property to colorize the table cells. This way, we don't get into trouble if semi-transparent colors are used as table backgrounds. +- Then we add a linear background to the table cells with `background-image: linear-gradient(var(--table-accent-bg), var(--table-accent-bg));`. Since `--table-accent-bg` is transparent by default, we have an invisible transparent linear gradient by default. +- When either `.table-striped`, `.table-hover` or `.table-active` classes are added, the `--table-accent-bg` is set to a semitransparent color to colorize the background. +- For each table variant the `--table-accent-bg` color with the most contrast is generated, therefor `.table-primary` has a darkened accent color and `.table-dark` has a lightened accent color. +- The text color and border color are also generated the same way. The colors and border colors are inherited by default. + +Behind the scenes it looks like this: + +{{< scss-docs name="table-variant" file="scss/mixins/_table-variants.scss" >}} + +## Table borders + +### Bordered tables + +Add `.table-bordered` for borders on all sides of the table and cells. + +{{< table class="table table-bordered" >}} + +[Border color utilities]({{< docsref "/utilities/borders#border-color" >}}) can be added to change colors: + +{{< table class="table table-bordered border-primary" >}} + +### Tables without borders + +Add `.table-borderless` for a table without borders. + +{{< table class="table table-borderless" >}} + +{{< table class="table table-dark table-borderless" >}} + +### Small tables + +Add `.table-sm` to make any `.table` more compact by cutting all cell `padding` in half. + +{{< table class="table table-sm" >}} + +{{< table class="table table-dark table-sm" >}} + +## Vertical alignment + +Table cells of `` are always vertical aligned to the bottom. Table cells in `` inherit their alignment from `
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
` and are aligned to the the top by default. Use the [vertical align]({{< docsref "/utilities/vertical-align" >}}) classes to re-align where needed. + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Heading 1Heading 2Heading 3Heading 4
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableNulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowThis cell inherits vertical-align: bottom; from the table rowNulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: middle; from the tableThis cell inherits vertical-align: middle; from the tableThis cell is aligned to the top.Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
+
+ + +{{< highlight html >}} + +
+
+ + + ... + + + + + ... + + + ... + + + + + + + + +
......This cell is aligned to the top....
+ -{{< /example >}} +{{< /highlight >}} -### Captions +## Nesting -A `` functions like a heading for a table. It helps users with screen readers to find a table and understand what it's about and decide if they want to read it. +Neither border styles, active styles nor table variants are inherited by nested tables: -{{< example >}} - - +
+
List of users
@@ -660,6 +331,92 @@ A ` + + + + + + + + + + + + + + + + + +
#
` functions like a heading for a table. It helps users with screen r
Handle
1MarkOtto@mdo
+ + + + + + + + + + + + + + + + + + + + + + + + + +
HeaderHeaderHeader
AFirstLast
BFirstLast
CFirstLast
+
3Larrythe Bird@twitter
+ + +{{< highlight html >}} + + + ... + + + ... + + + + ... + +
+ + ... +
+
+{{< /highlight >}} + +## How nesting works + +To prevent **any** style from leaking to nested tables we worked with the child combinator (`>`). Since we needed to target all the `td`s and `th`s in the `thead`, `tbody` and `tfoot`, our selector would look pretty long. Therefor we use the rather odd looking `.table > :not(caption) > * > * ` selector to target all `td`s and `th`s of the `.table` and not a nested table. Note: if you add ``s as direct children of a table, those `` will be wrapped in a `` by default and therefor making the selector work. + +## Anatomy + +### Table head + +Similar to tables and dark tables, use the modifier classes `.table-light` or `.table-dark` to make ``s appear light or dark gray. + +
+ + + + + + + + + @@ -681,7 +438,143 @@ A `
#FirstLastHandle
1
` functions like a heading for a table. It helps users with screen r
-{{< /example >}} +
+ +{{< highlight html >}} + + + ... + + + ... + +
+{{< /highlight >}} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+ +{{< highlight html >}} + + + ... + + + ... + +
+{{< /highlight >}} + + +### Table foot + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
FooterFooterFooterFooter
+
+ +{{< highlight html >}} + + + ... + + + ... + + + ... + +
+{{< /highlight >}} + +### Captions + +A `` functions like a heading for a table. It helps users with screen readers to find a table and understand what it's about and decide if they want to read it. + +
+ + + {{< partial "table-content.html" >}} +
List of users
+
+ +{{< highlight html >}} + + + + ... + + + ... + +
List of users
+{{< /highlight >}} You can also put the `` on the top of the table with `.caption-top`. @@ -880,3 +773,10 @@ Use `.table-responsive{-sm|-md|-lg|-xl|-xxl}` as needed to create responsive tab {{- end -}} {{< /tables.inline >}} {{< /highlight >}} + +## Customizing in Sass + +- The factor variables (`$table-striped-bg-factor`, `$table-active-bg-factor` & `$table-hover-bg-factor`) are used to determine the contrast in table variants. +- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-level` variable. + +{{< scss-docs name="table-variables" file="scss/_variables.scss" >}} diff --git a/site/content/docs/4.3/migration.md b/site/content/docs/4.3/migration.md index 34f8dc9f0f..3806b6049a 100644 --- a/site/content/docs/4.3/migration.md +++ b/site/content/docs/4.3/migration.md @@ -72,7 +72,10 @@ Changes to Reboot, typography, tables, and more. - [RFS]({{< docsref "/getting-started/rfs" >}}) enabled for automated font size rescaling. [See #29152](https://github.com/twbs/bootstrap/pull/29152) - Reset default horizontal `padding-left` on `