Gebruikers die modi met hoog contrast aanzetten in hun besturingssysteem of browser, verwachten dat UI-elementen (zoals scrollbalken) extreem goed leesbaar zijn. Ze vertrouwen vaak op een scherpe scheiding tussen voorgrond en achtergrond in plaats van subtiele grijstinten of themakleuren.
In deze handleiding vind je optionele instructies voor het gebruik van de CSS-mediafunctie @media (prefers-contrast: more) om scrollbalkstijlen met hoog contrast af te dwingen.
Leesbaarheid verbeteren
Als je scrollbalken aanpast met scrollbar-color of vrije variabelen, kun je een expliciete overschrijving bieden voor modi voor hoog contrast. Dit is vooral handig als het primaire thema van je app om esthetische redenen scrollbalken met een laag contrast gebruikt.
OPTIONEEL: Gebruik een @media (prefers-contrast: more)-blok om donkere, duidelijke kleuren te definiëren voor de duim en het spoor.
/* Define default standard colors as variables */
.scroller {
--scrollbar-thumb: #bbb;
--scrollbar-track: #f1f1f1;
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
scrollbar-width: thin;
scrollbar-gutter: stable;
}
/* OPTIONAL: Provide clear, high-contrast overrides */
@media (prefers-contrast: more) {
.scroller {
/* Use extremely distinct colors like solid black against white */
--scrollbar-thumb: #000000;
--scrollbar-track: #ffffff;
}
}
Problemen om rekening mee te houden bij het gebruik van scrollbar-color
- Gebruik GEEN animaties of overgangen voor
scrollbar-color. Door een WebKit-bug flikkert de schuifbalk elke keer datscrollbar-colorverandert. - Op macOS worden de eigenschappen
scrollbar-color(standaard) en::-webkit-scrollbar(verouderd) standaard genegeerd, omdat macOS systeemeigen overlay-scrollbalken gebruikt. Je MOET aangepaste kleuren koppelen aanscrollbar-width(bijvoorbeeldthinofauto) om macOS te dwingen ze weer te geven. - Zelfs als
scrollbar-widthis toegepast, geven macOS-overlayscrollbalken de track (goot) standaard transparant weer. Als het ontwerp een zichtbare achtergrondkleur voor de track vereist op MacOS, MOET jescrollbar-gutter: stable;toepassen op de scrollbare container. Houd er rekening mee dat deze alleen verschijnt nadat de gebruiker de cursor op de scrollbalk heeft geplaatst. - Zelfs met
scrollbar-gutter: stablekan de track transparant zijn op MacOS. De duim mag niet afhankelijk zijn van de trackkleur om zichtbaar te zijn.
Fallbacks en browserondersteuning
Fallbacks en browserondersteuning voor scrollbar-color
Deze functie is een progressive enhancement en vereist niet altijd fallbacks.
Als de stijl belangrijk is en het Baseline-doel van de gebruiker Baseline Algemeen beschikbaar of eerder is, MOET je de niet-standaard pseudo-elementen ::-webkit-scrollbar opnemen als fallbacks.
Plaats verouderde fallbacks in een @supports not (scrollbar-color: auto)-blok om conflicten te voorkomen tussen standaardproperty's en verouderde WebKit-selectors in browsers die beide systeemeigen ondersteunen.
Als u aangepaste eigenschappen gebruikt om kleuren te definiëren, worden deze automatisch overgenomen door de verouderde WebKit-selectors. U hoeft ze NIET te dupliceren.
/* Legacy fallback for WebKit/Blink browsers */
@supports not (scrollbar-color: auto) {
.scroller::-webkit-scrollbar {
/* Must define base size in WebKit for custom colors to be visual */
width: 12px;
height: 12px;
}
.scroller::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb);
}
.scroller::-webkit-scrollbar-track {
background: var(--scrollbar-track);
}
}