Kortversjonen
- CSS-mønstre tegnes med gradienter som bruker harde fargestopp, slik at fargene skifter brått i stedet for å gli over i hverandre.
- Funksjonene repeating-linear-gradient, repeating-radial-gradient og repeating-conic-gradient gjentar stoppene til elementet er fylt, og tegner striper, ringer og stråler.
- background-size gjør én gradient til en flis, som brukes til å bygge prikkemønstre, linjerutenett, sjakkmønstre og vevde ruter.
- Stopposisjoner i piksler holder stripene skarpe og jevne, mens prosenter kan gi ujevne, uklare kanter.
- Mønstre bak tekst bør ha lav kontrast, slik at ordene er lette å lese.
På denne siden
CSS-mønstre er gjentakende bakgrunner, som striper, rutenett, prikker og ruter, tegnet utelukkende med gradientfunksjoner. To grep får dem til å fungere. Harde fargestopp, der to stopp har samme posisjon, gjør en gradient til en skarp kant. Gjentakelse, enten med gradientfunksjonene repeating-* eller flislegging med background-size, gjør én kant til et mønster. Resultatet veier noen få byte, skalerer perfekt og henter fargene fra CSS-variablene dine.
background.Slik lager harde stopp former
En gradient blander fargene mellom nabostopp. Hvis neste stopp begynner akkurat der det forrige sluttet, finnes det ingen avstand å blande over, så fargen skifter langs en skarp linje. Kortformen er én farge med to posisjoner, som #1e293b 0 10px, som holder fargen ensartet fra 0 til 10 piksler. Guiden til lineære CSS-gradienter forklarer stopp, hint og harde stopp i detalj.
/* a soft blend */
background: linear-gradient(90deg, #1e293b, #334155);
/* a hard edge at 50% */
background: linear-gradient(90deg, #1e293b 50%, #334155 50%);
/* the same stripe pair, repeated every 20px */
background: repeating-linear-gradient(90deg, #1e293b 0 10px, #334155 10px 20px);Striper med repeating-linear-gradient
repeating-linear-gradient() gjentar stopplisten langs gradientlinjen til elementet er fylt. Lengden på én gjentakelse er posisjonen til det siste stoppet, så 0 10px, 10px 20px gjentas hver 20. piksel. Endre vinkelen for diagonaler, og forholdet mellom de to båndene for nålestriper eller brede markisestriper.
| Mønster | Stopp | Effekt |
|---|---|---|
| Jevne striper | A 0 10px, B 10px 20px | Like bånd, gjentas hver 20px |
| Nålestriper | A 0 23px, B 23px 24px | En linje på 1px hver 24px |
| Markise | A 0 40px, B 40px 80px ved 90deg | Brede loddrette bånd |
| Dobbel linje | A 0 20px, B 20px 22px, A 22px 26px, B 26px 28px | To tynne linjer tett sammen |
Rutenett, prikker og fliser med background-size
Noen mønstre kan ikke tegnes med én gjentakende gradient: et prikkemønster trenger gjentakelse i to retninger. Løsningen er å tegne én flis, for eksempel én prikk eller ett hjørne av et rutenett, og sette background-size til flisens størrelse. Bakgrunner gjentas som standard, så flisen fyller elementet.
.grid-lines {
background-color: #0f172a;
background-image:
linear-gradient(rgb(255 255 255 / 0.08) 1px, transparent 1px),
linear-gradient(90deg, rgb(255 255 255 / 0.08) 1px, transparent 1px);
background-size: 32px 32px;
}
.dots {
background-color: #fefce8;
background-image: radial-gradient(#ca8a04 1.5px, transparent 2px);
background-size: 20px 20px;
}
.checkerboard {
background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 24px 24px;
}background-size.Rutenettet består av to gradienter: én tegner en vannrett linje på 1px øverst i hver flis, den andre en loddrett linje langs venstre kant. Prikkene er en liten radiell gradient som blir gjennomsiktig etter 2 piksler. Sjakkmønsteret bruker en konisk gradient delt i firedeler, og trenger derfor bare ett lag.
Vevde ruter, skotskruter og sikksakk
Halvgjennomsiktige striper i lag lager vevde mønstre: der et vannrett og et loddrett bånd krysser hverandre, legges fargene oppå hverandre og ruten blir mørkere. Slik får du vevde ruter. Legg til et nytt sett med tynnere striper i en annen farge, så får du skotskruter. Sikksakk kommer fra fire trekantede hjørner, hvert tegnet med et hardt stopp ved 25% i en ulik vinkel.
.gingham {
background-color: #ffffff;
background-image:
linear-gradient(90deg, rgb(220 38 38 / 0.45) 50%, transparent 0),
linear-gradient(rgb(220 38 38 / 0.45) 50%, transparent 0);
background-size: 24px 24px;
}
.zigzag {
background-color: #e0f2fe;
background-image:
linear-gradient(135deg, #0ea5e9 25%, transparent 25%),
linear-gradient(225deg, #0ea5e9 25%, transparent 25%),
linear-gradient(315deg, #0ea5e9 25%, transparent 25%),
linear-gradient(45deg, #0ea5e9 25%, transparent 25%);
background-position: -16px 0, -16px 0, 0 0, 0 0;
background-size: 32px 32px;
}Bevegelige striper i fremdriftslinjer
Animerte diagonale striper er en klassisk måte å vise at noe fortsatt arbeider på. Tegn stripene som en flis med background-size, og flytt deretter background-position nøyaktig én flisbredde. Fordi siste bilde samsvarer med første, har løkken ingen synlig overgang. Bruk dette på små elementer, og stopp det for dem som foretrekker redusert bevegelse.
.progress {
background-color: #4f46e5;
background-image: linear-gradient(45deg, rgb(255 255 255 / 0.18) 25%, transparent 25% 50%, rgb(255 255 255 / 0.18) 50% 75%, transparent 75%);
background-size: 28px 28px;
animation: crawl 1s linear infinite;
}
@keyframes crawl {
to { background-position: 28px 0; }
}
@media (prefers-reduced-motion: reduce) {
.progress { animation: none; }
}Størrelse, tema og skalering av mønstre
Skriv stopposisjoner og flisstørrelser i piksler eller em, ikke prosenter. Prosenter avhenger av elementets størrelse, så stripene strekkes ujevnt når elementet endrer størrelse, og kanter kan havne mellom piksler og bli uklare. Med em skaleres mønsteret med teksten rundt, noe som passer til mønstrede merker og etiketter.
Egendefinerte CSS-egenskaper gjør mønstrene gjenbrukbare. Definer fargene og størrelsen én gang, og varier dem per komponent eller tema, for eksempel et lysere mønster i lys modus og et roligere i mørk modus.
.stripes {
--a: #1e293b;
--b: #334155;
--w: 10px;
background: repeating-linear-gradient(45deg, var(--a) 0 var(--w), var(--b) var(--w) calc(var(--w) * 2));
}
.stripes--warm {
--a: #fff7ed;
--b: #fed7aa;
--w: 14px;
}Mønstre bak tekst
Unngå
- Striper med høy kontrast rett bak brødtekst
- Fine mønstre som flimrer når siden rulles
- Mønstre i samme farge som teksten
- Flere ulike mønstre på én skjerm
Gjør dette
- Mønstre med lav kontrast og to nærliggende nyanser av én farge
- Større, roligere fliser på store flater
- Et ensfarget felt under tekst på et urolig mønster
- Ett mønster som en gjenkjennelig aksent
Mønstre er en type tekstur, og de samme reglene gjelder: diskrete nok til å føles mer enn å leses. Bakgrunnstekstur tar for seg korn, papir og stoff; tekst på urolige bakgrunner forklarer hvordan du holder ordene leselige oppå dem.
Spørsmål folk stiller
Hvordan lager jeg striper i CSS?
Bruk repeating-linear-gradient() med harde stopp, for eksempel repeating-linear-gradient(45deg, #1e293b 0 10px, #334155 10px 20px). Endre vinkelen for å styre retningen og lengdene for å styre bredden.
Hvordan lager jeg et prikkemønster i CSS?
Tegn én prikk med radial-gradient(#ca8a04 1.5px, transparent 2px) og gjenta den med background-size: 20px 20px.
Hvordan lager jeg et sjakkmønster i CSS?
Bruk repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) med en background-size som 24px 24px. Hver flis inneholder fire ruter.
Hvorfor er CSS-stripene mine uklare eller ujevne?
Prosentposisjoner kan havne mellom piksler. Bruk lengder i piksler eller em for stopp og flisstørrelser, og la det være en halv piksel mellom stoppene på diagonale kanter.
Er CSS-gradientmønstre bedre enn bildemønstre?
For geometriske mønstre er svaret som regel ja: de trenger ingen nedlasting, holder seg skarpe i alle størrelser og kan få nye farger med CSS-variabler. Organiske eller fotografiske teksturer trenger fortsatt bilder.
Skrevet av Gradiently
Teamet bak Gradiently, et designverktøy bygget rundt Marks: levende gradienter som gjør at alt du designer ser ut som ditt.
Se profilen vår


