diff --git a/scss/helpers/_position.scss b/scss/helpers/_position.scss index e0c4c2c1100b12f5ad590ffef222a0e5c104fde0..63fe4504a26f9309db20fe273d52ae6a3839a24e 100644 --- a/scss/helpers/_position.scss +++ b/scss/helpers/_position.scss @@ -18,10 +18,17 @@ z-index: $zindex-fixed; } -.sticky-top { - @supports (position: sticky) { - position: sticky; - top: 0; - z-index: $zindex-sticky; +// Responsive sticky top +@supports (position: sticky) { + @each $breakpoint in map-keys($grid-breakpoints) { + @include media-breakpoint-up($breakpoint) { + $infix: breakpoint-infix($breakpoint, $grid-breakpoints); + + .sticky#{$infix}-top { + position: sticky; + top: 0; + z-index: $zindex-sticky; + } + } } } diff --git a/site/content/docs/4.3/helpers/position.md b/site/content/docs/4.3/helpers/position.md index 921e47a9f557e700649a1f00ceba0fd7a447c5e2..c44002ae97ef5d294a3346010c4f714550eff495 100644 --- a/site/content/docs/4.3/helpers/position.md +++ b/site/content/docs/4.3/helpers/position.md @@ -31,3 +31,14 @@ Position an element at the top of the viewport, from edge to edge, but only afte {{< highlight html >}} <div class="sticky-top">...</div> {{< /highlight >}} + +## Responsive sticky top + +Responsive variations also exist for `.sticky-top` utility. + +{{< highlight html >}} +<div class="sticky-sm-top">Stick to the top on viewports sized SM (small) or wider</div> +<div class="sticky-md-top">Stick to the top on viewports sized MD (medium) or wider</div> +<div class="sticky-lg-top">Stick to the top on viewports sized LG (large) or wider</div> +<div class="sticky-xl-top">Stick to the top on viewports sized XL (extra-large) or wider</div> +{{< /highlight >}}