]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
add .sticky-thead support sticky-thead 36125/head
authorMark Otto <markdotto@gmail.com>
Thu, 7 Apr 2022 00:19:17 +0000 (17:19 -0700)
committerJulien Déramond <juderamond@gmail.com>
Mon, 15 Jul 2024 07:39:25 +0000 (09:39 +0200)
scss/_tables.scss
scss/_variables.scss
site/content/docs/5.3/content/tables.md

index 276521a387fe615b4c5b5a9feb3f2ea5b758e27d..f122944ee86be6ed64855744157650cae9bcb1c9 100644 (file)
   @include table-variant($color, $value);
 }
 
+
+// Sticky table headers
+.thead-sticky {
+  position: sticky;
+  top: var(--#{$prefix}table-thead-sticky-top, 0);
+  z-index: $table-thead-sticky-zindex;
+}
+
+
 // Responsive tables
 //
 // Generate series of `.table-responsive-*` classes for configuring the screen
index cfe25b528fa82da89e0125291390821799201614..a8df23ddcac1b563f371897dd04c421e4b77ec11 100644 (file)
@@ -762,6 +762,8 @@ $table-striped-columns-order: even !default;
 
 $table-group-separator-color: currentcolor !default;
 
+$table-thead-sticky-zindex:   5 !default;
+
 $table-caption-color:         var(--#{$prefix}secondary-color) !default;
 
 $table-bg-scale:              -80% !default;
index 3d3583c376fa9f0f906e61c6104aa6cb88dd3fb8..72ff11588fd00eec384c3c7c0647412569a0cbe9 100644 (file)
@@ -661,6 +661,76 @@ You can also put the `<caption>` on the top of the table with `.caption-top`.
 </table>
 {{< /example >}}
 
+## Sticky table headers
+
+Add `.thead-sticky` to a `<thead>` to make it stick to the top of the table's parent container while the `<tbody>` contents continue to scroll. Modify the `--bs-table-thead-sticky-top` CSS variable as needed to offset any sticky headers or navigation you may have.
+
+{{< example >}}
+<table class="table" style="--bs-table-thead-sticky-top: 4rem;">
+  <thead class="thead-sticky bg-dark text-white">
+    <tr>
+      <th scope="col">#</th>
+      <th scope="col">First</th>
+      <th scope="col">Last</th>
+      <th scope="col">Handle</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+    <tr>
+      <th scope="row">4</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">5</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">6</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+    <tr>
+      <th scope="row">7</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">8</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">9</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+{{< /example >}}
+
 ## Responsive tables
 
 Responsive tables allow tables to be scrolled horizontally with ease. Make any table responsive across all viewports by wrapping a `.table` with `.table-responsive`. Or, pick a maximum breakpoint with which to have a responsive table up to by using `.table-responsive{-sm|-md|-lg|-xl|-xxl}`.