Liukuvärit

1. Suorat liukuvärit

Suorat liukuvärit saadaan aikaan linear-gradient() -funktiolla.

Tämä luo liukuvärin, joka menee punaisesta siniseen:

Miten koodi kannattaa sisentää?

Sisennyksillä, välilyönneillä ja rivinvaihdoilla ei ole merkitystä koodin toimivuuden kannalta, mutta ne auttavat silmää hahmottamaan, mikä osa koodia kuuluu mihinkin, ja helpottavat virheiden etsimistä sekä koodin ymmärtämistä.

Voit sisentää joko välilyönneillä tai Tab -näppäimellä (näppäin Q kirjaimen vasemmalla puolella).

Rivinvaihdon voi tehdä Enter -näppäimellä.

Esimerkki 1

...on parempi kirjoittaa näin:

Esimerkki 2

Tämä on tärkeää etenkin silloin kun koodinpätkä on pitkä:

Vaikka koodinpätkä toimii teknisesti oikein, sitä on huomattavasti vaikeampi lukea ja ymmärtää verrattuna selkeästi sisennettyyn versioon:

Tätä voi selkiyttää lisää laittamalla välilyöntejä niin että koodin eri osat alkavat samasta kohtaa:

Tai jopa näin:

Voit lisätä CSS koodin sisään kommentteja näppäilemällä /* */.

Näiden merkkien väliin voi kirjoittaa mitä vain ilman että se vaikuttaa koodin toimivuuteen:

Tee niinkuin itselle on helpointa ja nopeinta. Vältä kuitenkin sekasotkua vaikka se toimisikin!

Voit vaihtaa liukuvärin suuntaa:

Suunta määritellään ensimmäisellä rivillä. Ensin tulee avainsana to ja sitten vaihtoehtoisesti bottom / top / left / right.

Tai kulmasta kulmaan:

Voit käyttää myös astelukuja:

Voit määrittää monta väriä:

Miksi liukuväri ei toimi / tule näkyviin?

Mikäli liukuvärisi ei tule näkyviin, koodissasi on virhe. On hyvin tärkeää että kaikki on kirjoitettu pilkuntarkasti oikein koodin rakenteen mukaan. Yleisimpiä virheitä on puuttuva pilkku, sulku tai muu välimerkki, tai sitten väärin kirjoitettu värin määritelmä.


Jokaisen sulkujen sisällä olevan rivin välissä tulee olla pilkku

❌: puuttuva pilkku

Korjaus: blue, ← lisää pilkku


Viimeisellä rivillä ei saa olla pilkkua

❌: viimeisellä rivillä on pilkku

Korjaus: yellow ← poista pilkku viimeiseltä riviltä


Asteluvun jälkeen pitää olla "deg" ilman välilyöntiä numeron ja "deg":in välissä

❌: asteluvusta puuttuu "deg"

Korjaus: 90deg ← lisää "deg"


Väri on määritelty väärin

❌: blue on kirjoitettu väärin

Korjaus: bleu ← pitäisi olla blue


Puuttuva sulku

❌: linear-gradient() -funktio on jäänyt "auki"

Korjaus: puuttuva sulku linear-gradient( ← lisää ) loppuun ennen ; merkkiä

Värien sijainnit voi määrittää prosenteilla:

Tai kahdella prosenttiluvulla, joista ensimmäinen on alkupiste ja toinen loppupiste:

Värien sijainnin voi määrittää myös vaikka pikselimitoilla:

Jos värin alkupiste on sama tai pienempi kuin edellisen värin loppupiste, näiden värien välille tulee selkeä raja:

Muutamia esimerkkejä

Tarkemman värimäärityksen voi saada aikaan esimerkiksi lch() -funktiolla:

Miten värejä kannattaa määritellä?

Jos sekoitat keskenään sinistä ja keltaista, minkä värin saat aikaiseksi?

Vastaus on sRGB-väriavaruudessa epäintuitiivisesti harmaa.

Miksi? Tämä selittyy sillä miten värit muodostuvat ruudulla.

Näyttöjen ruudut koostuvat miljoonista pikseleistä. Jokainen pikseli on todellisuudessa kolme mikroskooppisen pientä eri väristä valoa vierekkäin: punainen, vihreä ja sininen.

RGB pixels.jpg
Lähikuva ruudusta. Kuva: Stan Zurek CC BY-SA 3.0, Link

Punaisen, vihreän ja sinisen päävärien sekoituksilla voi aikaansaada melkein minkä tahansa muun värin. Tätä värien skaalaa ja tapaa näyttää värejä kutsutaan sRGB-väriavaruudeksi.

Esimerkiksi: Jos punaiset ja vihreät valot ovat samaan aikaan täysillä, mutta sininen on pois päältä, saamme keltaisen värin.

rgb(255 255 0) on tapa kuvata keltaista väriä numeerisesti käyttäen punaisen (R), vihreän (G) ja sinisen (B) valon yhdistelmän arvoja. Jokainen väri voi saada arvon väliltä 0 – 255, mikä määrittää kuinka paljon kyseistä väriä sekoitetaan.

Jos R = 0, G = 0 ja B = 0, eli jos valot ovat sammuksissa, saamme mustaa:

Päinvastoin, jos kaikki valot ovat täysillä, eli jos R = 255, G = 255 ja B = 255, saamme valkoista:

Miksi keltaisen ja sinisen sekoituksesta tulee sitten harmaa?

Sinisen RGB arvo on rgb(0 0 255) ja keltaisen rgb(255 255 0) — näiden kahden värin keskiarvo on rgb(127 127 127), joka onkin keskiharmaa...!

Jos kuitenkin haluaa siirtymän sinisestä keltaiseen joka ei muutu keskeltä harmaaksi, paras vaihtoehto lienee lisätä itse ne värit joita haluaa siirtymässä näkyä:

Värien valitseminen RGB arvoilla tai kryptisillä nimillä on kuitenkin aika epä-intuitiivista.

Sen takia värien määrittelyyn on olemassa muutamia eri vaihtoehtoja:

HSL

HSL tulee sanoista hue, saturation ja lightness, eli sävy, kylläisyys ja valoisuus.

  1. hue määritellään asteikolla 0-360, missä esim. 100 on vihreä ja 200 sininen.
  2. saturation määritellään asteikolla 0-100% värittömästä kylläiseen.
  3. lightness määritellään asteikolla 0%-100% tummasta valoisaan. 50% on keskiväri, jossa ei ole yhtään valkoista tai mustaa.

Lue lisää hsl:sta englanniksi

LCH

lch tulee sanoista lightness, chroma ja hue eli valoisuus, värin määrä ja värisävy.

  1. lightness määritellään asteikolla 0-100 tummasta valoisaan
  2. chroma määritellään asteikolla 0-100 värittömästä voimakkaaseen
  3. hue määritellään asteikolla 0-360, missä esim. 100 on vihreä ja 200 sininen

Lue lisää lch:sta englanniksi

OKLCH

oklch värisysteemi on samankaltainen kuin lch, mutta säilyttää värien havaintoon perustuvan kirkkauden paremmin.

Lue lisää oklch:sta englanniksi

Lue lisää väreistä englanniksi

Yhdistele useita liukuvärejä

Liukuvärejä voidaan laittaa päällekkäin käyttämällä useita linear-gradient() -funktioita peräkkäin.

Huomioi seuraavat asiat:

  1. linear-gradient() -funktiot erotetaan toisistaan pilkulla
  2. Ensimmäisenä määritelty liukuväri näkyy päällimmäisenä.
  3. Päällekkäisillä liukuväreillä tulee olla läpinäkyviä alueita, esim. transparent väriä käyttäen. Muuten ensimmäisenä määriteltyy liukuväri peittää alleen sen jälkeen tulevat.

Jos tähän lisätään background-size ominaisuus, liukuväri toistuu eri kokoisena:

Toistuvat suorat liukuvärit

Toistuvia liukuvärejä (engl. repeating gradient) voidaan saada aikaiseksi myös repeating-linear-gradient() -funktiolla.

repeating-linear-gradient() käytettäessä liukuväri toistuu kunnes koko alue on täyttynyt.

Yhdistelemällä liukuvärejä niiden potentiaali avautuu uudelle tasolle:

2. Säteittäiset liukuvärit

Säteittäiset liukuvärit saadaan aikaan radial-gradient() -funktiolla.

Säteittäiset liukuvärit lähtevät keskipisteestä reunoja kohti säteen muodossa.

Säteittäiset liukuvärit toimivat samalla periaatteella kuin suorat liukuvärit. Määritellään värit ja niiden sijainnit:

Voit vaihtaa sädettä:

Säteen muodon voi määritellä avainsanoilla circle tai ellipse ja sen jälkeen mihin säde ulottuu, vaihtoehtoina closest-corner, closest-side, farthest-corner, tai farthest-side.

Esimerkiksi:

Säteen voi määritellä myös prosenttiluvuilla:

Keskipisteen sijainnin voi määritellä avainsanalla at jonka jälkeen tulee joko top / center / bottom ja left / center / right:

...tai prosenttiluvuilla:

repeating-radial-gradient toistaa kuvioita säteittäin:

3. Kartiomaiset liukuvärit

Kartiomaiset liukuvärit saadaan aikaan conic-gradient() -funktiolla.

Ne kiertävät keskipisteen ympäri (sen sijaan että ne säteilevät keskipisteestä).

Kartiomaiset liukuvärit toimivat samalla periaatteella kuin säteittäiset ja suorat liukuvärit. Määritellään värit ja niiden sijainnit:

Voit vaihtaa kierron alkamiskohtaa:

Kierron alkamiskohta määritellään avainsanalla from jonka jälkeen tulee asteen määrä 0deg – 360deg:

Tai vaihtoehtoisesti 0.0turn – 1.0turn

Voidaan määritellä myös keskipiste avainsanalla at, samaan tapaan kuin säteittäisillä liukuväreillä:

Toistuvat kartiomaiset liukuvärit

repeating-conic-gradient() toistaa värien kierron: