I shipped skillcraft.ai !!!
Skillcraft helps you find the best learning resources tailored to your goals. Get a personalized roadmap with the best courses, books, and tutorials. Try it out, for free!
Up to date
Published
3 min read

Trevor I. Lasn

Building tools for developers. Currently building skillcraft.ai and blamesteve.lol

scrollbar-width & scrollbar-gutter: CSS Properties for Layout Control

Prevent content shifts and refine scrollable UIs with scrollbar-width and scrollbar-gutter

The scrollbar-width CSS property tackles a common challenge in web design - balancing the need for scrollable content with visual aesthetics. This property lets us control how thick scrollbars appear, making them more subtle without sacrificing functionality.

The scrollbar-width property accepts three values:


Scroll each container to see how different scrollbar-width values affect the interface. Notice how 'thin' provides a balanced compromise between aesthetics and usability.

scrollbar-width: auto

scrollbar-width: thin

scrollbar-width: none

⚠️ While 'none' might seem appealing, it can impact accessibility. I recommend using 'thin' for a better user experience.

The space where a scrollbar lives is called the scrollbar gutter - it sits between the inner border edge and outer padding edge of an element. browsers handle this space in two different ways:

  • Classic scrollbars: Take up actual space in your layout
  • Overlay scrollbars: Float on top of your content (common on macOS)

The scrollbar-gutter property lets us control how browsers handle this space. It accepts three values:


When should you use scrollbar-width or scrollbar-gutter?

They’re most useful in components where content length changes often - exactly where you don’t want things jumping around or shifting.

scrollbar-width works great for

  • Keeping chat message lists readable with a thin scrollbar
  • Sidebars like in VS Code where you want subtle scrolling
  • Data grids with lots of rows but limited vertical space
  • Making a Spotify-style horizontal media scroller look polished

scrollbar-gutter really shines when

  • Building a messenger app where new messages keep coming in
  • Creating modals with dynamic content that might need scrolling
  • Making data tables where rows get added or removed often
  • Handling sidebar navigation that expands and collapses

The key is using them together in places where content is dynamic and you want smooth scrolling without layout surprises. Nothing’s worse than clicking something just as the page shifts because a scrollbar popped in.

Word of caution: These properties are powerful, but that doesn’t mean every scrollbar needs customizing. Users have muscle memory for how scrollbars work. Only tweak scrollbars when it genuinely improves the user experience - like preventing those annoying layout jumps or cleaning up a cluttered interface.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
3 min read

HTML Details Element: The Native Accordion You're Not Using

Discover how the HTML details element can replace your JavaScript accordions and why it might be better than your current solution

Dec 10, 2024
Read article
Webdev
3 min read

CSS ::target-text for Text Highlighting

A look at how browsers can highlight text fragments using CSS ::target-text, making text sharing and navigation more user-friendly

Dec 17, 2024
Read article
Webdev
4 min read

How To Implement Content Security Policy (CSP) Headers For Astro

Content Security Policy (CSP) acts like a shield against XSS attacks. These attacks are sneaky - they trick your browser into running malicious code by hiding it in content that seems trustworthy. CSP's job is to spot these tricks and shut them down, while also alerting you to any attempts it detects.

Oct 16, 2024
Read article
Webdev
4 min read

HTTP CONNECT: Building Secure Tunnels Through Proxies

Understand how HTTP CONNECT enables HTTPS traffic through proxies

Nov 28, 2024
Read article
Webdev
4 min read

Explicit is better than implicit

Clarity is key: being explicit makes your code more readable and maintainable.

Sep 4, 2024
Read article
Webdev
7 min read

How to Land Your First Tech Job

A developer's guide to tech interviews - from someone who sits on both sides of the table

Oct 24, 2024
Read article
Webdev
6 min read

Inside the CSS Engine: CSSOM Explained

A deep dive into how browsers parse and manipulate CSS, its impact on web performance, and why it matters

Oct 25, 2024
Read article
Webdev
2 min read

link rel='modulepreload': Optimize JavaScript Module Loading

The rel='modulepreload' indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution

Dec 4, 2024
Read article
Webdev
3 min read

Form Validation That Doesn't Annoy Users: CSS :user-valid and :user-invalid

The new pseudo-classes :user-valid and :user-invalid give us a smarter way to style form validation states based on user interaction

Dec 12, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/css-scrollbar-width-and-scrollbar-gutter. It was written by a human and polished using grammar tools for clarity.