What is a scrollbar-color value?

Stilfulde Scrollbars: Tilpasning af Browserens Rullepaneler

17/07/2024

Rating: 4.47 (14520 votes)

Har du nogensinde overvejet, hvordan de små, men afgørende detaljer på en hjemmeside kan gøre en stor forskel for den samlede brugeroplevelse? En af disse ofte oversete, men essentielle, komponenter er browserens rullepanel – almindeligvis kendt som scrollbaren. Selvom det måske virker som et rent funktionelt element, kan et veldesignet rullepanel markant forbedre din hjemmesides æstetik, brugervenlighed og endda dit brands visuelle identitet. Forestil dig en hjemmeside, hvor hvert element, inklusive rullepanelerne, problemfrit matcher dit brands farver og stil, hvilket skaber en mere sammenhængende og professionel fremtoning. Dette er nu fuldt ud muligt med moderne CSS-egenskaber, der giver dig uovertruffen kontrol over udseendet af disse fundamentale navigationsværktøjer.

How do I change the look of a browser's scrollbar?
Chrome, Edge, Safari and Opera support the non-standard ::-webkit-scrollbar pseudo element, which allows us to modify the look of the browser's scrollbar. The following example creates a thin (10px wide) scrollbar, which has a grey track/bar color and a dark-grey (#888) handle: This example creates a scrollbar with box shadow:

Historisk set har tilpasning af rullepaneler været en udfordring, ofte afhængig af browser-specifikke pseudoelementer, der ikke var standardiserede. Men med fremkomsten af nye CSS-egenskaber som scrollbar-color og scrollbar-width, der er en del af CSS Scrollbars Level 1-specifikationen og understøttes i moderne browsere som Chrome 121+, er det blevet betydeligt nemmere og mere standardiseret at style rullepaneler. Denne guide vil dykke ned i disse nye muligheder og også berøre ældre metoder for at sikre, at dine rullepaneler ser fantastiske ud på tværs af et bredt spektrum af browsere og enheder, fra stationære computere til mobiltelefoner.

Indholdsfortegnelse

Anatomien af et Rullepanel

For effektivt at kunne style et rullepanel er det essentielt at forstå dets grundlæggende byggesten. Uanset operativsystem eller browser består et rullepanel som minimum af to hovedkomponenter: en bane (track) og en skyder (thumb).

  • Banen (Track): Dette er det område, hvori skyderen bevæger sig. Forestil dig det som skinnen, som et tog kører på. Banen repræsenterer den samlede rulleafstand for det rullbare indhold. Den giver en visuel indikation af, hvor meget indhold der er at rulle igennem.
  • Skyderen (Thumb): Dette er den bevægelige del af rullepanelet, der repræsenterer den aktuelle position inden for det rullbare område. Den bevæger sig langs banen, når brugeren scroller. Skyderen er ofte det element, som brugeren kan trække direkte med musen eller fingeren (på touch-enheder) for hurtigt at navigere gennem indholdet. Dens størrelse kan også variere afhængigt af mængden af indhold – jo mere indhold, jo mindre skyder.

Udover disse to primære dele kan rullepaneler også inkludere yderligere komponenter, afhængigt af operativsystemets standarddesign. Dette kan omfatte knapper i enderne af banen til at øge eller mindske rulningen trin for trin, eller særlige hjørneelementer, hvor vandrette og lodrette rullepaneler mødes. Selvom de nye CSS-egenskaber primært fokuserer på bane og skyder, er det at kende til hele anatomien med til at forstå den fulde brugeroplevelse, som rullepanelet leverer.

Klassiske vs. Overlappende Rullepaneler

Før vi dykker ned i de specifikke CSS-egenskaber, er det afgørende at forstå forskellen mellem to primære typer af rullepaneler: de klassiske og de overlappende. Denne distinktion har direkte indflydelse på, hvordan dine rullepaneler interagerer med sidens layout og det synlige indhold.

Klassiske Rullepaneler (Classic Scrollbars)

Klassiske rullepaneler er den traditionelle type, som de fleste er bekendte med. Disse rullepaneler er placeret i en dedikeret margen for rullepanelet, hvilket betyder, at de optager et eksklusivt område i browserens layout. Dette område er typisk mellem indholdets indre kant og den ydre kant af paddingen. Som et resultat reducerer klassiske rullepaneler det tilgængelige plads for selve indholdet. De er ofte uigennemsigtige (ikke gennemsigtige) og er som regel altid synlige, uanset om brugeren scroller eller ej. Denne type rullepanel er en fast del af sidens dimensioner og kan påvirke, hvor meget indhold der kan vises, før der skal rulles.

Overlappende Rullepaneler (Overlay Scrollbars)

Overlappende rullepaneler repræsenterer en mere moderne og diskret tilgang. Som navnet antyder, er disse rullepaneler flydende elementer, der renderes over det underliggende indhold. Dette er en stor fordel, da de ikke optager ekstra plads i layoutet og dermed ikke reducerer det tilgængelige areal for dit indhold. Overlappende rullepaneler vises typisk ikke som standard; de dukker kun op, når brugeren aktivt scroller eller holder musen over det rullbare område. For at indholdet under dem skal forblive synligt, er de ofte semitransparente. Deres størrelse kan også variere, når brugeren interagerer med dem, hvilket giver en mere dynamisk og responsiv følelse. Overlappende rullepaneler er ideelle til at skabe et rent og minimalistisk design, hvor fokus skal være på indholdet uden visuel forstyrrelse fra rullepanelerne.

How do I change the look of a browser's scrollbar?

Valget mellem klassiske og overlappende rullepaneler afhænger af dit designmål og den ønskede brugeroplevelse. Klassiske rullepaneler giver en konstant visuel indikation af rullebarhed, mens overlappende rullepaneler giver et mere strømlinet udseende, men kan kræve en smule tilvænning for nogle brugere.

Farvelæg Rullepaneler med scrollbar-color

Den mest direkte og effektive måde at tilføje farve til dine rullepaneler på er ved hjælp af CSS-egenskaben scrollbar-color. Denne egenskab er en del af den standardiserede CSS Scrollbars Level 1-specifikation og giver dig præcis kontrol over farveskemaet for rullepanelets skyder og bane. Den accepterer to <color>-værdier:

  • Den første <color>-værdi definerer farven på skyderen (thumb).
  • Den anden <color>-værdi definerer farven, der skal bruges til banen (track).

Du kan bruge enhver gyldig CSS-farveværdi, såsom navngivne farver (f.eks. red, blue), hex-koder (f.eks. #FF0000), RGB-værdier (f.eks. rgb(255, 0, 0)), RGBA-værdier (f.eks. rgba(255, 0, 0, 0.5) for gennemsigtighed), eller HSL/HSLA-værdier. Dette giver dig stor fleksibilitet til at matche rullepanelerne med din hjemmesides eksisterende farvepalet.

Her er et simpelt eksempel:

.scroller {
scrollbar-color: #FF69B4 #4169E1; /* Hotpink for skyder, Royalblue for bane */
}

I dette eksempel vil skyderen få farven hotpink, og banen vil blive royalblue. Det er vigtigt at bemærke, at når du bruger et overlappende rullepanel, vil banens farve som standard ikke være synlig. Den vil kun blive vist, når du holder musen over rullepanelet, eller når du aktivt scroller. For at vende tilbage til operativsystemets standardfarver for rullepanelet, kan du simpelthen bruge auto som værdi:

.scroller {
scrollbar-color: auto;
}

Denne egenskab er en kraftfuld tilføjelse til moderne webdesign, da den giver en enkel og standardiseret metode til at tilpasse et element, der tidligere var vanskeligt at styre. Det bidrager til en mere poleret og brandet brugeroplevelse.

Ændring af Rullepanelbredden med scrollbar-width

Udover farven kan du også kontrollere bredden af dine rullepaneler ved hjælp af CSS-egenskaben scrollbar-width. Denne egenskab er også en del af CSS Scrollbars Level 1-specifikationen og giver dig mulighed for at vælge en smallere rullepanelvariant eller endda helt skjule den, uden at fjerne rullefunktionaliteten. Dette er særligt nyttigt for at optimere det visuelle layout og skabe et mere minimalistisk design.

De accepterede værdier for scrollbar-width er:

  • auto: Dette er standardbredden for rullepanelet, som leveres af den underliggende platform eller operativsystemet. Dette er typisk den bredeste variant.
  • thin: Denne værdi resulterer i en tyndere variant af rullepanelet. Dette kan enten være en tyndere version leveret af platformen, eller en browser-genereret rullepanel, der er tyndere end standarden. Den er ideel til at spare plads og reducere visuel støj.
  • none: Denne værdi skjuler effektivt rullepanelet helt. Selvom rullepanelet er usynligt, kan elementet stadig rulles fuldt ud. Dette kan være attraktivt for et meget rent design, men det er afgørende at overveje tilgængelighed og brugervenlighed. Hvis rullepanelet er helt skjult, skal du sikre dig, at brugeren stadig forstår, at indholdet kan rulles, måske gennem visuelle hints som fade-effekter eller skygger, der indikerer mere indhold.

Her er et eksempel på brug:

.scroller {
scrollbar-width: thin;
}

Dette vil gøre rullepanelet tyndere end standarden. Et andet eksempel:

.scroller {
scrollbar-width: none;
}

Dette vil skjule rullepanelet fuldstændigt. Det er vigtigt at bemærke, at du ikke kan bruge en specifik længdeenhed som 16px som værdi for scrollbar-width. Egenskaben er designet til at give prædefinerede breddeindstillinger, der respekterer systemets design, eller til at skjule rullepanelet helt. Dette sikrer en vis konsistens på tværs af systemer, samtidig med at udviklere får fleksibilitet til at tilpasse udseendet.

How do I style a scrollbar?
Use the scrollbar-width and scrollbar-color properties to style scrollbars. From Chrome version 2 it's been possible to style scrollbars with the ::-webkit-scrollbar-* pseudo-elements. This approach works fine in Chrome and Safari, but was never standardized by the CSS Working Group.

Browserkompatibilitet og Fallbacks

Mens scrollbar-color og scrollbar-width er standardiserede og understøttes i nyere browserversioner (især Chrome 121+ og Edge), har ældre browsere, især dem baseret på WebKit-motoren (f.eks. ældre versioner af Chrome, Safari og Opera), understøttet tilpasning af rullepaneler gennem CSS-pseudoelementer som ::-webkit-scrollbar-*. Disse pseudoelementer var ikke en del af en officiel standard, men har været udbredte i mange år.

For at sikre den bredest mulige kompatibilitet og en ensartet oplevelse for alle dine brugere, anbefales det at kombinere de nye standardegenskaber med disse ældre ::-webkit-scrollbar-* pseudoelementer. Dette kan gøres elegant ved hjælp af CSS's @supports regel, som giver dig mulighed for at anvende stilarter betinget af browserens understøttelse af specifikke CSS-egenskaber.

Her er et omfattende eksempel på, hvordan du kan implementere en robust fallback-løsning:

<style>
.scroller {
/* Definér CSS-variabler for nemmere vedligeholdelse og konsistens */
--scrollbar-color-thumb: #FF69B4; /* Hotpink */
--scrollbar-color-track: #4169E1; /* Royalblue */
--scrollbar-width-modern: thin;
--scrollbar-width-legacy: 10px; /* En konkret bredde for ældre WebKit-browsere */
}

/* Anvend stilarter for moderne browsere, der understøtter scrollbar-* egenskaber */
@supports (scrollbar-width: auto) {
.scroller {
scrollbar-color: var(--scrollbar-color-thumb) var(--scrollbar-color-track);
scrollbar-width: var(--scrollbar-width-modern);
}
}

/* Anvend stilarter for ældre browsere, der understøtter ::-webkit-scrollbar-* pseudoelementer */
@supports selector(::-webkit-scrollbar) {
.scroller::-webkit-scrollbar-thumb {
background: var(--scrollbar-color-thumb);
/* Tilføj afrunding for en pænere skyder */
border-radius: 5px;
}
.scroller::-webkit-scrollbar-track {
background: var(--scrollbar-color-track);
/* Tilføj afrunding for en pænere bane */
border-radius: 5px;
}
.scroller::-webkit-scrollbar {
width: var(--scrollbar-width-legacy);
height: var(--scrollbar-width-legacy); /* Vigtigt for vandrette rullepaneler */
}
}

/* Yderligere styling for demo-formål */
.scroller {
overflow: auto;
height: 300px;
border: 1px solid #ddd;
padding: 20px;
margin: 20px auto;
max-width: 600px;
background-color: #f9f9f9;
resize: vertical; /* Gør elementet resizable for at teste scrollbars */
}
p {
margin-bottom: 1em;
line-height: 1.6;
}
</style>

<div class="scroller">
<p>Dette er indholdet af det rullbare område, hvor rullepanelet vil blive stylet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Mere indhold for at sikre, at scrollbaren vises og kan testes. Det er vigtigt at have tilstrækkeligt med tekst eller elementer, der overstiger den definerede højde af den rullbare container, for at rullepanelet aktiveres. Dette giver dig mulighed for at observere effekten af dine CSS-regler i praksis. Eksperimenter gerne med farver og bredder for at finde det design, der passer bedst til din hjemmesides æstetik.</p>
<p>Yderligere indhold for at sikre en lang nok rullbarhed. Husk, at styling af rullepaneler er en detalje, der kan forbedre den samlede brugeroplevelse betydeligt ved at skabe et mere ensartet og professionelt udseende. Dette gælder især på mobile enheder, hvor en strømlinet UI er afgørende. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>

Denne tilgang sikrer, at din styling fungerer på tværs af et bredt spektrum af browsere. Det er dog vigtigt at være opmærksom på en nuance: når du specificerer width eller height for ::-webkit-scrollbar, vil det ofte tvinge et overlappende rullepanel til at opføre sig som et klassisk rullepanel (dvs. det optager plads og er altid synligt). Hvis du ønsker at bevare illusionen af et overlappende rullepanel, kan du vælge kun at ændre farverne, når musen holdes over skyderen, som vist i dette eksempel:

.scroller::-webkit-scrollbar-thumb {
background: transparent;
}
.scroller::-webkit-scrollbar-track {
background: transparent;
}
.scroller:hover::-webkit-scrollbar-thumb {
background: var(--scrollbar-color-thumb);
}
.scroller:hover::-webkit-scrollbar-track {
background: var(--scrollbar-color-track);
}
/* Safari bug workaround: Denne brugerdefinerede egenskab ugyldiggør stilarter ved hover,
hvilket tvinger en genberegning af stilen. Dette er nødvendigt for at omgå en fejl i Safari. */
.scroller:hover {
--fix: ;
}

Den sidste linje med --fix: ; er en kendt workaround for en specifik fejl i Safari, der sikrer, at stilarterne genberegnes korrekt ved hover-effekter. Ved at anvende disse teknikker kan du opnå et konsistent og attraktivt rullepaneldesign på tværs af de fleste browsere, uanset om de understøtter de nyeste standarder fuldt ud eller ej.

Sammenligning af Egenskaber

For at give et hurtigt overblik over de vigtigste egenskaber og deres værdier, se denne sammenligningstabel:

EgenskabBeskrivelseAccepterede VærdierBrowser Support (Moderne)
scrollbar-colorDefinerer farven på rullepanelets skyder og bane.<farve> <farve> (skyder, bane) eller autoChrome 121+, Edge 121+, Firefox 64+
scrollbar-widthDefinerer bredden af rullepanelet.auto, thin, noneChrome 121+, Edge 121+, Firefox 64+
::-webkit-scrollbarGenerel pseudoelement for WebKit-baserede rullepaneler.Kan style width, height, background mv.Chrome, Safari, Edge (ældre), Opera
::-webkit-scrollbar-thumbSpecifik pseudoelement for rullepanelets skyder.background, border-radius mv.Chrome, Safari, Edge (ældre), Opera
::-webkit-scrollbar-trackSpecifik pseudoelement for rullepanelets bane.background, border-radius mv.Chrome, Safari, Edge (ældre), Opera

Ofte Stillede Spørgsmål (FAQ)

Q: Hvorfor virker min scrollbar-styling ikke i alle browsere?

A: Nye CSS-egenskaber som scrollbar-color og scrollbar-width har fuld understøttelse i moderne browsere som Chrome 121+ og Firefox 64+. For ældre browsere, især dem baseret på WebKit (f.eks. ældre Safari og Chrome-versioner), skal du sandsynligvis bruge de browser-specifikke pseudoelementer som ::-webkit-scrollbar-* for at opnå den ønskede effekt. Det er bedst at anvende en kombination af begge, ofte ved hjælp af @supports reglen, for at sikre bredest mulig kompatibilitet. Se afsnittet om browserkompatibilitet for et detaljeret eksempel på en fallback-løsning.

Q: Kan jeg angive en præcis bredde for min scrollbar i pixels?

A: Med den standardiserede scrollbar-width egenskab er det desværre ikke muligt at angive en præcis bredde i pixels (f.eks. 10px). Du kan kun vælge mellem de foruddefinerede værdier auto, thin eller none. Hvis du har et specifikt designkrav, der kræver en præcis pixelbredde, skal du anvende ::-webkit-scrollbar pseudoelementet, som giver mulighed for at definere width eller height i pixels.

How do I change the look of a browser's scrollbar?

Q: Hvad er forskellen på en klassisk og en overlappende scrollbar, og hvilken skal jeg vælge?

A: En klassisk scrollbar optager dedikeret plads i layoutet, er typisk uigennemsigtig og altid synlig. Den reducerer det tilgængelige indholdsområde. En overlappende scrollbar svæver over indholdet, optager ikke plads, er ofte gennemsigtig og vises kun ved aktiv rulning. Valget afhænger af dit designmål. Klassiske scrollbars giver en konstant visuel indikation af rullebarhed, hvilket kan være godt for tydelighed. Overlappende scrollbars giver et renere, mere minimalistisk design, men kræver muligvis, at brugeren er opmærksom på, at indholdet kan rulles.

Q: Hvordan skjuler jeg en scrollbar helt, men bevarer rullemuligheden?

A: Du kan bruge scrollbar-width: none; til at skjule rullepanelet helt. Indholdet vil stadig være fuldt rullbart, men det visuelle element af scrollbaren forsvinder. Selvom dette kan skabe et meget rent design, er det vigtigt at overveje tilgængelighed og brugervenlighed. Hvis der ikke er en visuel indikator for rulning, kan brugere med nedsat mobilitet eller kognitive udfordringer have svært ved at opdage, at der er mere indhold. Overvej at tilføje alternative visuelle hints, som f.eks. en skyggeeffekt i bunden af et rullbart område, når der er mere indhold at rulle ned til.

Q: Påvirker styling af scrollbars ydeevnen på min hjemmeside?

A: Generelt vil styling af rullepaneler med CSS have en minimal eller ingen mærkbar negativ indvirkning på din hjemmesides ydeevne. Disse stilarter er en del af browserens native rendering engine og er optimeret til at køre effektivt. Komplekse animationer eller hyppige DOM-ændringer relateret til scrollbars kunne potentielt påvirke ydeevnen, men simple farve- og breddetilpasninger er typisk ikke et problem.

Konklusion

At tilpasse udseendet af browserens rullepaneler er en lille, men utrolig effektiv måde at forbedre din hjemmesides samlede design og brugeroplevelse på. Med de nye standardiserede CSS-egenskaber som scrollbar-color og scrollbar-width er det lettere end nogensinde at integrere rullepanelerne elegant i dit design, så de matcher dit brands visuelle identitet og skaber en mere ensartet og professionel følelse. Dette gælder for alle enheder, fra store skærme til de mindste mobiltelefoner, hvor en strømlinet brugerflade er afgørende.

Husk altid at overveje browserkompatibilitet og anvende fallbacks, hvor det er nødvendigt, for at sikre en konsistent og attraktiv oplevelse for alle dine brugere, uanset hvilken browser de anvender. Ved at mestre disse teknikker kan du tilføje endnu et lag af polering til dine webprojekter og skabe en mere sammenhængende, æstetisk tiltalende og brugervenlig digital oplevelse, der skiller sig ud fra mængden.

Hvis du vil læse andre artikler, der ligner Stilfulde Scrollbars: Tilpasning af Browserens Rullepaneler, kan du besøge kategorien Teknologi.

Go up