Anatomy
│ Content area │
│ Content area ┌──┐ │ ← Thumb
│ Content area │ │ │ Rounded, 12px wide
│ Content area └──┘ │
│ │ │ ← Track: transparent
│ │ │
- Track — Scrollbar background area, transparent (
background: transparent) - Thumb — Draggable scroll indicator, 12 px wide, radius
--ds-radius-full - Scroll Container — The
overflow: auto/scrollcontainer holding overflow content
Usage Guidelines
✅ Do
- Apply the custom scrollbar style consistently to all scroll areas in the design system
- Keep the scrollbar style subtle and unobtrusive, so it doesn't interfere with content reading
- Consider touch scroll momentum on mobile (
scroll-behavior: smooth) - Ensure the thumb height is sufficient to clearly indicate scroll position
❌ Don't
- Don't completely hide the scrollbar — users need to know content is scrollable (
overflow: hiddenhides the scrollbar) - Don't use overly bright or high-contrast scrollbar colors — distracting
- Don't modify scrollbar behavior logic, only its visual style
- Don't use a thumb that's too thin (< 6 px) — hard to drag precisely on touch
Interaction Behavior
| State | Description |
|---|---|
| Mouse wheel | Content scrolls, thumb position updates synchronously |
| Drag thumb | Directly positions scroll position |
| Click track | Page-jumps to clicked position |
| Hover | Thumb color deepens from --ds-color-grey-state-default to --ds-color-grey-state-hover |
| Touch scroll | Content follows finger with inertial scrolling |
Accessibility
| Requirement | Implementation |
|---|---|
| Keyboard scrolling | Set tabindex="0" on scroll container so it can be focused and scrolled with arrow/Page keys |
| Assistive technology | Custom styles do not affect native scrolling functionality for assistive tech |
| Content reachability | Ensure all content is accessible via keyboard scrolling |

