Navigation and overlays
Scroll spy
A sticky, horizontally scrolling bar of section links with an active pill, set with .scroll-spy-active or aria-current.
Example
<nav class="scroll-spy" aria-label="Sections"><a href="#overview" class="scroll-spy-link scroll-spy-active">Overview</a><a href="#features" class="scroll-spy-link">Features</a><a href="#specs" class="scroll-spy-link">Specs</a><a href="#reviews" class="scroll-spy-link">Reviews</a><a href="#faq" class="scroll-spy-link">FAQ</a></nav>Classes
3 classes. Click a name to copy it. Utilities on the same element always win over component defaults, so any of them can be adjusted with plain utility classes.
| Class | Type | What it does |
|---|---|---|
| Base | Base class of the scroll spy. On a <nav> in the example. Sets sticky position, offsets, stacking order, flex display, gap and padding.CSS |
|
| Modifier | Modifier, combined with the scroll-spy class. On an <a> in the example. Sets alignment, padding, corner radius, text size, font weight and text style.CSS |
|
| Modifier | Modifier, combined with the scroll-spy class. On an <a> in the example. Sets text color and background.CSS |
Usage
Components ship inside the same stylesheet as the utilities. There is nothing else to install and no script to load: link Monsoon and write the markup.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/monsooncss">
<!-- Scroll spy: start from the base class, then add modifiers -->
<nav class="scroll-spy" aria-label="Sections"><a href="#overview" class="scroll-spy-link scroll-spy-active">Overview</a><a href="#features" class="scroll-spy-link">Features</a><a href="#specs" class="scroll-spy-link">Specs</a><a href="#reviews" class="scroll-spy-link">Reviews</a><a href="#faq" class="scroll-spy-link">FAQ</a></nav>Theme it with --seed on any ancestor, for example style="--seed: #0d9488", and force a scheme with class="dark" or class="light" on a wrapper.
Accessibility
- Wrap navigation in
navwith anaria-labelwhen there is more than one on the page, and mark the current link witharia-current="page". - Every interactive part shows a visible focus ring with
:focus-visible, and tone colors pair with-foregroundtokens that keep text at 4.5:1 or better in light and dark mode.