CSS ja verkko

CSS linear-gradient: täydellinen opas suoraviivaiseen liukuväriin

Jokainen linear-gradient()-funktion osa selitetään elävällä esimerkillä koodin vieressä: oletussuunnasta koviin pysäytyksiin, kerrostettuihin kiiltoihin ja pehmeämpiin OKLCH-sekoituksiin.

GradientlyVahvistettu Gradiently-tili··5 min lukuaika
Kansi: Waking Hour · GR·RKP7·GN

Lyhyesti

  • CSS:n suoraviivainen liukuväri on kuva, jonka selain piirtää suoraa viivaa pitkin, ja se kirjoitetaan linear-gradient()-funktiolla ja käytetään missä tahansa, mihin kuva kelpaa, yleensä background-imagessa.
  • Ilman suuntaa suoraviivainen liukuväri kulkee ylhäältä alas, mikä vastaa arvoa 180deg; 0deg osoittaa ylös ja kulmat kääntyvät myötäpäivään.
  • Ilman paikkoja olevat värikohdat jakautuvat tasaisesti, ja kaksi samassa kohdassa olevaa värikohtaa tekevät sekoituksen sijaan terävän reunan.
  • Useita liukuvärejä voi kerrostaa yhteen background-imageen pilkuilla erotettuna, ja ensimmäinen piirretään päälle.
  • Interpolaatiomenetelmä, kuten in oklch, pitää sekoituksen keskikohdan kirkkaana sen sijaan, että se harmaantuisi.
Tällä sivulla

CSS:n suoraviivainen liukuväri (linear gradient) on kuva, jonka selain piirtää suoraa viivaa pitkin ja sekoittaa väristä toiseen. Se kirjoitetaan linear-gradient()-funktiolla ja sitä voi käyttää kaikkialla, missä CSS hyväksyy kuvan, useimmiten background-imagessa. Se ei tarvitse tiedostoa, skaalautuu mihin tahansa kokoon sumentumatta eikä maksa mitään ladata. Lyhin hyödyllinen versio on kaksi väriä: linear-gradient(#0f172a, #38bdf8) häipyy syvästä laivastonsinisestä ylhäällä taivaansiniseen alhaalla.

css
.hero {
  background-color: #0f172a; /* shown if the gradient fails */
  background-image: linear-gradient(#0f172a, #38bdf8);
}
Yksinkertaisin suoraviivainen liukuväri: kaksi väriä, oletussuunta ja tasainen väri alla varavärinä.
Laivastonsinisestä taivaansiniseenlinear-gradient(#0f172a, #38bdf8)
Yllä oleva koodi piirrettynä. Ilman suuntaa liukuväri kulkee ylhäältä alas.

Tämä opas käy läpi funktion jokaisen osan siinä järjestyksessä, jossa ne vastaan tulevat. Jos haluat laajemman kuvan siitä, miten suoraviivaiset liukuvärit eroavat säteittäisistä, kartiomaisista ja mesh-sekoituksista, aloita oppaasta liukuvärien tyypit.

linear-gradient()-funktion syntaksi

Funktio ottaa valinnaisen suunnan, valinnaisen värin interpolaatiomenetelmän ja sitten vähintään kahden värikohdan luettelon. Kaikki erotetaan pilkuilla paitsi suunta ja interpolaatiomenetelmä, jotka jakavat ensimmäisen argumentin.

OsaEsimerkkiMitä se tekee
Suunta kulmana135deg, 0.25turnAsettaa liukuviivan kulman. 0deg osoittaa ylös, kulmat kääntyvät myötäpäivään.
Suunta avainsanoillato right, to top leftOsoittaa viivan laatikon sivulle tai kulmaan.
Interpolaatiomenetelmäin oklch, in srgbValitsee väriavaruuden, jossa sekoitus lasketaan.
Värikohta#38bdf8 40%Väri ja valinnaisesti yksi tai kaksi paikkaa viivalla.
Värivihje30% kahden värikohdan välissäSiirtää sekoituksen puoliväliä naapureidensa välillä.
linear-gradient()-funktion osat siinä järjestyksessä, jossa ne esiintyvät. Vain värikohdat ovat pakollisia.

Täydellinen viite löytyy MDN:n linear-gradient()-sivulta, joka dokumentoi myös tarkan kieliopin CSS Images -määrittelystä.

Liukuvärin kulmat ja suuntaavainsanat

Kulmat noudattavat kompassia: 0deg osoittaa ylös, 90deg oikealle, 180deg alas ja 270deg vasemmalle. Liukuväri alkaa vastakkaiselta puolelta ja kulkee kohti antamaasi suuntaa, joten 90deg kulkee vasemmalta oikealle. Voit kirjoittaa myös turn, rad tai grad, jossa 0.25turn vastaa arvoa 90deg. Oletus, kun et anna mitään, on to bottom.

Yksi indigosta pinkkiin -pari neljässä kulmassa. Ensimmäinen väri on aina viivan alussa.

Kulmaavainsanat eivät ole sama asia kuin 45 asteen kulmat. to top right kallistaa viivaa niin, että keskimmäinen väri kulkee täsmälleen kahden muun kulman välistä, laatikon muodosta riippumatta. Leveällä bannerilla viiva on paljon tasaisempi kuin 45deg, joka osoittaa aina 45 asteeseen ja ei välitä laatikon muodosta. Käytä avainsanoja, kun sekoituksen pitää kunnioittaa kulmia, ja kulmia, kun useiden eri muotoisten elementtien pitää jakaa yksi suunta. Suunnan valinnasta on lisää oppaassa liukuvärin kulma.

Värikohdat, paikat ja vihjeet

Ilman paikkaa olevat värikohdat jaetaan tasavälein, joten kolme väriä sijaitsee kohdissa 0 %, 50 % ja 100 %. Anna värikohdalle paikka prosentteina tai pituutena siirtääksesi sitä. Anna kaksi paikkaa, niin väri pysyy tasaisena niiden välillä. Laita yksinäinen prosentti kahden värikohdan väliin, ja siitä tulee vihje: piste, jossa sekoitus saavuttaa puolivälin värinsä, jolloin siirtymän toinen puoli on nopeampi kuin toinen.

css
/* even spacing */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee, #f0f9ff);

/* a hint: the midpoint arrives early, at 20% */
background-image: linear-gradient(90deg, #0c4a6e, 20%, #22d3ee);

/* two positions: cyan holds solid from 35% to 65% */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee 35% 65%, #f0f9ff);
Kolme tapaa muotoilla sama sekoitus. Paikat voivat olla myös pituuksia, kuten 120px.
Sama syvästä merestä jäähän -paletti muotoiltuna kolmella tavalla paikoilla ja vihjeillä.

Kovat pysäytykset raidoille ja jaoille

Kun kaksi värikohtaa jakaa saman paikan, sekoitukselle ei jää tilaa, ja tuloksena on terävä reuna. Selaimet myös korjaavat värikohdan, joka tulee aiemmin kuin edellinen, mikä antaa kätevän oikotien: #f97316 50%, #1e293b 0 tarkoittaa, että toinen väri alkaa täsmälleen siitä, mihin ensimmäinen päättyy. Toista ajatus repeating-linear-gradient()-funktiolla, ja sinulla on raidat.

Kovat pysäytykset piirtävät muotoja sekoitusten sijaan. Lisää niitä on oppaassa CSS-kuviot.

Useiden liukuvärien kerrostaminen yhteen taustaan

background-image hyväksyy pilkuilla erotetun luettelon, ja ensimmäinen kuva piirretään päälle. Kerrokset näkyvät toistensa läpi vain siellä, missä ne ovat läpinäkyviä, joten ylemmät liukuvärit häipyvät yleensä väriin transparent. Nykyaikaiset selaimet sekoittavat esikerrotulla alfalla, joten häivytys väriin transparent ei enää vedä harmaata sävyä väriin niin kuin ennen. Yhdistä kerrokset background-size- ja background-repeat-ominaisuuksiin, kun kerroksen pitää peittää vain osa laatikosta.

css
.card {
  background-color: #111827;
  background-image:
    /* top: a soft sheen across the upper third */
    linear-gradient(180deg, rgb(255 255 255 / 0.12), transparent 35%),
    /* bottom: the colour itself */
    linear-gradient(135deg, #312e81, #7c3aed 55%, #db2777);
}
Kiilto kerrostettuna perusliukuvärin päälle. Luettelon ensimmäinen liukuväri piirretään päälle.

Kerrostaminen on myös rikkaampien tehosteiden perusta: kerrostetut säteittäiset hehkut tekevät mesh-liukuvärin CSS:llä, ja ohut kohinakerros päällä piilottaa portaikkoisuuden, kuten selitetään oppaassa liukuvärin banding.

Pehmeämmät sekoitukset värien interpolaatiolla

Kun jokainen väri on kirjoitettu vanhalla muodolla, kuten heksalla, rgb():llä tai hsl():llä, selain sekoittaa sRGB:ssä taaksepäin yhteensopivuuden vuoksi. sRGB-sekoitukset kaukaisten sävyjen välillä kulkevat tylsien, harmahtavien keskikohtien kautta: sinisestä keltaiseen on klassinen tapaus. Lisäämällä in oklab tai in oklch pyydät havainnollista väriavaruutta, joka pitää keskikohdan vaaleampana ja tasaisempana. Oma opas OKLCH-liukuväreistä CSS:ssä käsittelee sävysuunnat ja varavaihtoehdot.

Sinisestä keltaiseen kolmella tavalla. Vain interpolaatiomenetelmä muuttuu.

Vältä

  • Pitkiä sekoituksia vastakkaisten sävyjen välillä pelkässä sRGB:ssä
  • to top right -arvoa, kun useiden eri muotoisten korttien pitää jakaa yksi suunta
  • Häivytystä väriin white, kun tarkoitat häivyttää pois; käytä transparent
  • Hyvin pehmeitä, tummia, leveitä sekoituksia ilman rakeisuutta, jotka juovittuvat monilla näytöillä

Tee näin

  • Lisää in oklch tai keskimmäinen värikohta pitääksesi sekoitukset eloisina
  • Käytä yhtä kulmaa, kuten 135deg, yhtenäiseen järjestelmään
  • Häivytä kerrokset väriin transparent, jotta alla oleva näkyy
  • Lisää himmeä kohinakerros suurten tummien liukuvärien päälle

Selaintuki ja varavaihtoehdot

linear-gradient() toimii ilman etuliitettä kaikissa nykyisissä selaimissa, joten vanhat -webkit--versiot voi jättää pois. Interpolaatiomenetelmät, kahden paikan värikohdat ja vihjeet ovat uudempia; tarkista tiedot palvelusta caniuse. Varmin tapa on tasainen background-color ensin, sitten liukuväri ja sitten parannettu versio myöhemmässä määrittelyssä, jonka vanhat selaimet ohittavat, koska eivät osaa jäsentää sitä.

css
.banner {
  background-color: #1e3a8a;
  background-image: linear-gradient(90deg, #1e3a8a, #f59e0b);
  /* browsers that understand interpolation methods use this line */
  background-image: linear-gradient(90deg in oklch, #1e3a8a, #f59e0b);
}
Asteittainen parantaminen: jokainen rivi ohittaa edellisen vain, jos selain ymmärtää sen.

Jos haluat mieluummin lähteä sekoituksesta, jolla on jo luonnetta, kuin säätää värikohtia käsin, liukuvärigeneraattori tai valmiiden taustojen kirjasto säästää aikaa. Molemmissa tapauksissa säilytä koodi: CSS-liukuväri pysyy terävänä kaikissa kooissa ja painaa muutaman tavun.

Usein kysyttyä

Miten teen suoraviivaisen liukuvärin CSS:llä?

Aseta elementille background-image: linear-gradient(suunta, väri1, väri2), esimerkiksi linear-gradient(90deg, #0f172a, #38bdf8). Lisää sen eteen background-color varavärinä.

Mikä on CSS-liukuvärin oletussuunta?

Ylhäältä alas, sama kuin to bottom tai 180deg. Ensimmäinen väri näkyy ylhäällä ja viimeinen alhaalla.

Miten teen liukuväriin terävän rajan?

Anna kahdelle vierekkäiselle värikohdalle sama paikka, kuten #f97316 50%, #1e293b 50%, tai käytä toisena paikkana arvoa 0, jolloin se rajataan edelliseen värikohtaan.

Miksi liukuvärini keskikohta näyttää harmaalta?

Heksavärit sekoitetaan oletuksena sRGB:ssä, mikä himmentää kaukaisten sävyjen välisen keskikohdan. Lisää kulman jälkeen in oklch tai in oklab, tai lisää kirkkaampi keskimmäinen värikohta.

Onko 45deg sama kuin to top right?

Vain neliössä. 45deg osoittaa aina 45 asteeseen, kun taas to top right säätää kulmansa niin, että keskimmäinen väri kulkee laatikon kahden muun kulman välistä.

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