CSS ja verkko

CSS-kuviot toistuvilla liukuväreillä

Kovat värikohdat muuttavat liukuvärit muodoiksi, ja background-size muuttaa muodot laatoiksi. Näillä kahdella ideoilla piirrät useimmat klassiset kuviot muutamalla rivillä ilman kuvatiedostoja.

GradientlyVahvistettu Gradiently-tili··4 min lukuaika
Kansi: Burnt Expedition · GR·5E64·EH

Lyhyesti

  • CSS-kuviot piirretään liukuväreillä, joissa on kovia värikohtia, jolloin värit vaihtuvat heti eivätkä sekoitu.
  • Funktiot repeating-linear-gradient, repeating-radial-gradient ja repeating-conic-gradient toistavat värikohtansa täyttääkseen elementin, mikä piirtää raitoja, renkaita ja säteitä.
  • background-size muuttaa yksittäisen liukuvärin laataksi, ja niin rakennetaan pisteruudukot, viivaruudukot, shakkiruudut ja gingham.
  • Pikseleinä kirjoitetut värikohtien paikat pitävät raidat teräväreunaisina ja tasaisina, kun taas prosentit voivat tuottaa epätasaisia, sumeita reunoja.
  • Tekstin takana olevien kuvioiden tulee olla vähäkontrastisia, jotta sanat pysyvät helposti luettavina.
Tällä sivulla

CSS-kuviot ovat toistuvia taustoja, kuten raitoja, ruudukkoja, pisteitä ja ruutuja, jotka piirretään kokonaan liukuvärifunktioilla. Kaksi ideaa saa ne toimimaan. Kovat värikohdat, joissa kaksi värikohtaa jakaa saman paikan, muuttavat liukuvärin teräväksi reunaksi. Toisto, joko repeating-*-liukuvärifunktioilla tai background-size-laatoituksella, muuttaa yhden reunan kuvioksi. Tulos painaa muutaman tavun, skaalautuu täydellisesti ja ottaa värinsä CSS-muuttujistasi.

Kuusi kuviota, kukin yksi toistuva liukuväri. Kopioi mikä tahansa suoraan background-ominaisuuteen.

Miten kovat värikohdat tekevät muotoja

Liukuväri sekoittuu vierekkäisten värikohtien välillä. Jos seuraava värikohta alkaa täsmälleen siitä, mihin edellinen päättyi, sekoittumiseen ei ole matkaa, ja väri vaihtuu kovana viivana. Lyhenne tälle on väri kahdella paikalla, kuten #1e293b 0 10px, joka pitää värin tasaisena 0:sta 10 pikseliin. Opas CSS linear-gradient käsittelee värikohdat, vihjeet ja kovat pysäytykset tarkemmin.

css
/* 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);
Sekoituksesta reunaan ja kuvioon kolmessa vaiheessa.

Raidat repeating-linear-gradientilla

repeating-linear-gradient() toistaa värikohtaluettelonsa liukuviivaa pitkin, kunnes elementti on täynnä. Yhden toiston pituus on viimeisen värikohdan paikka, joten 0 10px, 10px 20px toistuu 20 pikselin välein. Muuta kulmaa vinoja raitoja varten ja muuta kahden kaistan suhdetta hienoraitoja tai reheviä markiisiraitoja varten.

KuvioVärikohdatVaikutus
Tasaiset raidatA 0 10px, B 10px 20pxYhtä leveät kaistat, 20 px:n toisto
HienoraitaA 0 23px, B 23px 24px1 px:n viiva 24 px:n välein
MarkiisiA 0 40px, B 40px 80px kulmassa 90degLeveät pystykaistat
KaksoisviivaA 0 20px, B 20px 22px, A 22px 26px, B 26px 28pxKaksi ohutta viivaa lähekkäin
Raitareseptejä. A ja B ovat kaksi väriäsi, ja viimeinen värikohta määrää toiston pituuden.

Ruudukot, pisteet ja laatat background-sizella

Joitakin kuvioita ei voi piirtää yhdellä toistuvalla liukuvärillä: pisteruudukko vaatii toistoa kahteen suuntaan. Ratkaisu on piirtää yksi laatta, kuten yksi piste tai ruudukon yksi kulma, ja asettaa background-size laatan kokoon. Taustat toistuvat oletuksena, joten laatta täyttää elementin.

css
.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;
}
Piirustusruudukko, pisteruudukko ja shakkiruudukko. Jokainen on yksi laatta, jota background-size toistaa.

Ruudukko on kaksi liukuväriä: toinen piirtää 1 px:n vaakaviivan jokaisen laatan yläreunaan, toinen pystyviivan sen vasempaan reunaan. Pisteet ovat pieni säteittäinen liukuväri, joka muuttuu läpinäkyväksi 2 pikselin jälkeen. Shakkiruudukko käyttää neljänneksiin jaettua kartiomaista liukuväriä, minkä vuoksi se tarvitsee vain yhden kerroksen.

Gingham, tartaani ja siksak

Puoliläpinäkyvien raitojen kerrostaminen tekee kudottuja kuvioita: siellä, missä vaaka- ja pystykaista ylittävät toisensa, niiden värit kasautuvat ja ruutu tummenee. Se on gingham. Lisää toinen, ohuempi raitojoukko toisella värillä, ja siitä tulee tartaani. Siksakit syntyvät neljästä kolmiomaisesta kulmasta, joista jokainen on piirretty 25 %:n kovalla pysäytyksellä eri kulmassa.

css
.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;
}
Punainen gingham ja taivaansininen siksak. Siksakissa kaksi ensimmäistä kerrosta on siirretty puoli laattaa, jotta kolmiot lukkiutuvat toisiinsa.

Liikkuvat raidat edistymispalkkeihin

Animoidut vinoraidat ovat klassinen tapa näyttää, että jokin on yhä työn alla. Piirrä raidat laattana background-sizella ja siirrä background-position täsmälleen yhden laatan leveyden verran. Koska loppuruutu vastaa alkuruutua, silmukassa ei ole näkyvää hyppyä. Pidä se pienillä elementeillä ja pysäytä se niiltä, jotka haluavat vähennettyä liikettä.

css
.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; }
}
Raidat, jotka ryömivät edistymispalkin läpi. Animaation matka vastaa laatan leveyttä, joten silmukka on saumaton.

Kuvioiden mitoitus, teemoitus ja skaalaus

Kirjoita värikohtien paikat ja laattojen koot pikseleinä tai em-yksiköinä, älä prosentteina. Prosentit riippuvat elementin koosta, joten raidat venyvät epätasaisesti elementin koon muuttuessa ja reunat voivat osua pikselien väliin ja sumentua. em saa kuvion skaalautumaan ympäröivän tekstin mukana, mikä sopii kuvioiduille merkeille ja tunnisteille.

Mukautetut ominaisuudet tekevät kuvioista uudelleenkäytettäviä. Määrittele värit ja koko kerran ja vaihtele niitä komponentin tai teeman mukaan, esimerkiksi vaaleampi kuvio vaalealla teemalla ja hiljaisempi tummassa tilassa.

css
.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;
}
Yksi kuvio, teemoitettu vaihtamalla kolmea muuttujaa.

Kuviot tekstin takana

Vältä

  • Korkeakontrastisia raitoja suoraan leipätekstin takana
  • Hienoja kuvioita, jotka väreilevät sivua vieritettäessä
  • Tekstin kanssa samanvärisiä kuvioita
  • Useita erilaisia kuvioita samalla ruudulla

Tee näin

  • Vähäkontrastisia kuvioita, kaksi lähekkäistä saman värin sävyä
  • Suurempia, rauhallisempia laattoja isoilla pinnoilla
  • Tasainen paneeli sellaisen tekstin alla, joka on vilkkaan kuvion päällä
  • Yksi kuvio tunnistettavana korostuksena

Kuviot ovat eräänlaista tekstuuria, ja samat säännöt pätevät: hienovaraisia, jotta ne tuntee eikä lue. Taustatekstuuri käsittelee rakeisuuden, paperin ja kankaan; teksti vilkkailla taustoilla käsittelee sanojen pitämisen luettavina päällä.

Usein kysyttyä

Miten teen raitoja CSS:llä?

Käytä repeating-linear-gradient()-funktiota kovilla värikohdilla, esimerkiksi repeating-linear-gradient(45deg, #1e293b 0 10px, #334155 10px 20px). Muuta kulmaa suunnan ja pituuksia leveyden mukaan.

Miten teen pistekuvion CSS:llä?

Piirrä yksi piste funktiolla radial-gradient(#ca8a04 1.5px, transparent 2px) ja toista se asetuksella background-size: 20px 20px.

Miten teen shakkiruudukon CSS:llä?

Käytä funktiota repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) ja background-size-arvoa, kuten 24px 24px. Jokaisessa laatassa on neljä ruutua.

Miksi CSS-raitani ovat sumeita tai epätasaisia?

Prosenttipaikat voivat osua pikselien väliin. Käytä värikohdissa ja laattojen koissa pikseli- tai em-pituuksia ja jätä vinoilla reunoilla värikohtien väliin puoli pikseliä.

Ovatko CSS-liukuvärikuviot parempia kuin kuvakuviot?

Geometrisille kuvioille yleensä ovat: ne eivät tarvitse latausta, pysyvät terävinä kaikissa kooissa ja niiden värit voi vaihtaa CSS-muuttujilla. Orgaaniset tai valokuvamaiset tekstuurit tarvitsevat yhä kuvia.

Jaa tämä opas

Kirjoittanut GradientlyVahvistettu Gradiently-tili

Gradientlyn tiimi. Gradiently on Markien ympärille rakennettu suunnittelutyökalu: eläviä liukuvärejä, joiden ansiosta kaikki suunnittelemasi näyttää omaltasi.

Katso profiilimme