Skip to main content
/
/
/
Scrollbar

Scrollbar

Global scrollbar colors

New in 4.3

When including the bifrost CSS, we globally apply bifrost scrollbar colors for supporting browsers. For most browsers you will no longer need the CSS classes below, except if you want the thin version, use .bf-scrollbar-small.

.bf-scrollbar css class

The class .bf-scrollbar applies webkit-prefixed styling (only applied in Safari at time of writing) to any element that has a scrollbar. To apply the styling to the default browser scrollbar, you can either:

  • Add it in your public/index.html with <body class='bf-scrollbar'>
  • Call document.body.classList.add('bf-scrollbar') on app load in JS

For a thinner scrollbar use .bf-scrollbar-small instead, which both applies scrollbar-width: thin and styles webkit-only scrollbars slightly smaller.

Mobile devices have varying degrees of support, issues with, and need for scrollbar styling, so our webkit-prefixed CSS is only applied for screens wider (or taller) than 600px.

For users without prefers-reduced-motion we also apply scroll-behavior: smooth.

HTML example

<div class="bf-scrollbar" style="overflow: auto; max-height: 200px"> <p><code>.bf-scrollbar</code></p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div> <div class="bf-scrollbar-small" style="overflow: auto; max-height: 200px"> <p> <code>.bf-scrollbar-small</code> </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div> <div style="overflow: auto; max-height: 200px"> <p>Native scrollbar for comparison</p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div>
<div class="bf-scrollbar" style="overflow: auto; max-height: 200px"> <p><code>.bf-scrollbar</code></p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div> <div class="bf-scrollbar-small" style="overflow: auto; max-height: 200px"> <p> <code>.bf-scrollbar-small</code> </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div> <div style="overflow: auto; max-height: 200px"> <p>Native scrollbar for comparison</p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue. </p> </div>

.bf-scrollbar

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue.

.bf-scrollbar-small

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue.

Native scrollbar for comparison

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius vitae felis a sagittis. Suspendisse enim arcu, rhoncus vitae elit vitae, accumsan auctor ligula. Aenean varius, nibh in facilisis faucibus, urna justo sollicitudin quam, nec volutpat ligula nulla ut dolor. Vivamus vitae semper metus, ut gravida nisi. Proin a eros ut risus ultricies sodales. Suspendisse ornare lorem vel velit rhoncus aliquet. Aenean ipsum sapien, elementum quis lacinia id, pellentesque ut sapien. Mauris vitae nisi eget enim aliquam congue.

Permanent scrollbar

For pages with dynamic content (whether or not you use bifrost-styled scrollbar), the scrollbar will only appear when the content is taller than the viewport, which can result in a slight "jump" when the scrollbar appears or disappears.

If this is an issue, you can make the main scrollbar render permanently with the following CSS;

html { overflow-y: scroll; }
html { overflow-y: scroll; }

Also see scrollbar-gutter (not yet supported in Safari as of May 2024)