Načrtovanje in razvoj spletnih aplikacij

Barve v CSS

Barve so med najpogosteje uporabljenimi vrednostmi v CSS. Z njimi določamo barvo besedila, ozadja, robov in številnih drugih elementov. Za prikaz barv na zaslonu se pogosto uporablja zapis RGB, v CSS pa lahko isto barvo zapišemo na več različnih načinov.

Pomni: Isto barvo lahko v CSS pogosto zapišemo na več načinov, na primer kot ime barve, kot zapis #RRGGBB ali kot funkcijo rgb().

Osnovna pravila

Barve lahko na spletnih straneh dodamo z uporabo slogovnih predlog CSS. To lahko storimo na več načinov:

  • s poimenovanjem barve,
  • s šestnajstiškim zapisom,
  • z zapisom rgb(),
  • z zapisom rgba(),
  • z zapisom hsl() in hsla().

Vrednosti barv lahko uporabimo pri različnih lastnostih, na primer pri color, background-color in border-color. Lastnost color določa barvo besedila, lastnost background-color pa barvo ozadja elementa.

Pri 24-bitnem zapisu RGB lahko za vsako od treh osnovnih komponent uporabimo 256 različnih vrednosti. Tako dobimo skupaj 16.777.216 različnih kombinacij barv.

Pomni: Posebna vrednost transparent določa prosojno barvo, vrednost currentColor pa prevzame trenutno vrednost lastnosti color.

Primerjave

Primeri zapisovanja iste barve

Barva Ime barve Šestnajstiški zapis HEX Barva RGB
  aqua #00FFFF rgb(0,255,255)
  black #000000 rgb(0,0,0)
  blue #0000FF rgb(0,0,255)
  fuchsia #FF00FF rgb(255,0,255)
  gray #808080 rgb(128,128,128)
  green #008000 rgb(0,128,0)
  lime #00FF00 rgb(0,255,0)
  maroon #800000 rgb(128,0,0)
  navy #000080 rgb(0,0,128)
  olive #808000 rgb(128,128,0)
  orange #FFA500 rgb(255,165,0)
  purple #800080 rgb(128,0,128)
  red #FF0000 rgb(255,0,0)
  silver #C0C0C0 rgb(192,192,192)
  teal #008080 rgb(0,128,128)
  white #FFFFFF rgb(255,255,255)
  yellow #FFFF00 rgb(255,255,0)
  transparent    

Pozor: Enaka barva je lahko zapisana na več različnih načinov, vendar moramo pri tem paziti na pravilno sintakso posameznega zapisa.

Zgledi

Poimenovane barve

CSS podpira veliko poimenovanih barv. Najprej si oglejmo osnovne oziroma standardne barve, ki se pogosto uporabljajo pri začetnem učenju CSS. Med posebne vrednosti sodita tudi transparent in currentColor.

Osnovne poimenovane barve

Barva Ime barve
 aqua
 black
 blue
 fuchsia
 gray
 green
 lime
 maroon
 navy
 olive
 purple
 red
 silver
 teal
 white
 yellow
 transparent
 currentColor

Celoten seznam poimenovanih barv si lahko ogledaš na uradni strani MDN: CSS named colors.

Šestnajstiški zapis barv

Koda barve je sestavljena iz treh parov šestnajstiških števil za rdečo, zeleno in modro komponento. Tak zapis opisuje barvo v barvnem prostoru sRGB. V sodobnem CSS lahko v šestnajstiški zapis vključimo tudi alfa komponento za prosojnost. Šestnajstiški zapis barve lahko uporabimo povsod, kjer je v CSS dovoljena vrednost barve.

#FF00FF

Znak # uvede šestnajstiški zapis. Prvi par predstavlja rdečo barvo, drugi zeleno in tretji modro. Najnižja vrednost posamezne komponente je 00, najvišja pa FF.

sRGB je standardni barvni prostor RGB, ki sta ga leta 1996 predstavila Hewlett-Packard (HP) in Microsoft za bolj dosledno prikazovanje barv na zaslonih, tiskalnikih in spletu.

Gre za privzeti barvni prostor za velik del digitalnih vsebin, med njimi za spletne strani, številne slike in drugo večpredstavnostno vsebino. Njegov namen je, da so barve na različnih napravah čim bolj usklajene.

V sodobnem CSS lahko v HEX zapis vključimo tudi prosojnost. Tak zapis ima osem znakov, na primer #00000022, kjer zadnji par 22 predstavlja alfa komponento.

Primeri:

  • Modra barva ne vsebuje rdeče in zelene, zato je njena koda #0000FF.
  • Rumena barva vsebuje rdečo in zeleno, ne vsebuje pa modre, zato je njena koda #FFFF00.
  • Črna ne vsebuje nobene komponente svetlobe, zato ima kodo #000000, bela pa vsebuje vse tri komponente v največji meri, zato ima kodo #FFFFFF.
  • Polprosojna črna je lahko zapisana kot #00000022.

Kadar sta števki za zapis posamezne barvne komponente enaki, lahko barvo zapišemo tudi okrajšano, na primer #08F namesto #0088FF. Enako velja tudi za določene zapise s prosojnostjo, na primer #0002.

Določanje barve z zapisom RGB

Zapis RGB ima obliko:

rgb(rdeča, zelena, modra)

Funkcija rgb() izraža barvo v barvnem prostoru sRGB z rdečo, zeleno in modro komponento. V sodobnem zapisu lahko vsebuje tudi alfa komponento, torej prosojnost.

Primer:
Zelena barva ne vsebuje rdeče in modre, zato ima zapis rgb(0,255,0).

Barva Barva RGB
 rgb(0,255,255)
 rgb(0,0,0)
 rgb(0,0,255)
 rgb(255,0,255)
 rgb(128,128,128)
 rgb(0,128,0)
 rgb(0,255,0)
 rgb(128,0,0)
 rgb(0,0,128)
 rgb(128,128,0)
 rgb(255,165,0)
 rgb(128,0,128)
 rgb(255,0,0)
 rgb(192,192,192)
 rgb(0,128,128)
 rgb(255,255,255)
 rgb(255,255,0)

Določanje barve z zapisom RGBA

Zapis RGBA ima obliko:

rgba(rdeča, zelena, modra, alfa)

RGBA je uveljavljen zapis, ki RGB komponentam doda še alfa vrednost za prosojnost. Alfa med 0 in 1 določa stopnjo prosojnosti, kjer 0 pomeni popolno prosojnost, 1 pa popolno neprosojnost.

Primer:
Zelena barva ne vsebuje rdeče in modre, zato ima popolnoma neprosojen zapis rgba(0,255,0,1).

Barva Barva RGBA
 rgba(0,255,0,1)
 rgba(0,255,0,0.8)
 rgba(0,255,0,0.6)
 rgba(0,255,0,0.4)
 rgba(0,255,0,0.2)
 rgba(0,255,0,0)

Pozor: Pri zapisih z alfa komponento je končni videz barve odvisen tudi od ozadja elementa, saj različna stopnja prosojnosti spremeni način prikaza barve.

Določanje barve z zapisom HSL

HSL je kratica za hue, saturation, lightness oziroma odtenek, nasičenost in svetlost. Funkcija hsl() izraža barvo v sRGB glede na odtenek na barvnem krogu ter na nasičenost in svetlost. Podpira tudi neobvezno alfa komponento za prosojnost.

hsl(H, S, L)

H predstavlja odtenek na barvnem krogu. 0 pomeni rdečo, 120 zeleno in 240 modro. S predstavlja nasičenost v odstotkih, L pa svetlost v odstotkih.

Tudi HSL podpira prosojnost. Tak zapis imenujemo hsla(), kjer ima alfa enako kot pri modelu RGBA vrednost med 0 in 1.

hsla(H, S, L, alfa)

Primer:

<div style="background-color: hsla(0,100%,50%,0.2);"></div> 
<div style="background-color: hsla(0,100%,50%,0.4);"></div> 
<div style="background-color: hsla(0,100%,50%,0.6);"></div> 
<div style="background-color: hsla(0,100%,50%,0.8);"></div> 
<div style="background-color: hsla(0,100%,50%,1);"></div>

Priporočila

  • Pri preprostih primerih lahko uporabiš poimenovane barve, kadar je zapis jasen in pregleden.
  • Za natančno določanje barv pogosto uporabi HEX ali funkcijo rgb().
  • Kadar potrebuješ prosojnost, uporabi zapis z alfa komponento, na primer rgba(), hsla() ali 8-mestni HEX zapis.
  • Za svetlejše in temnejše različice barv je pogosto zelo uporaben zapis hsl().

Pogoste napake

  • Zamenjevanje šestnajstiškega zapisa in zapisov s funkcijami.
  • Napačno razumevanje alfa komponente pri prosojnosti.
  • Nepravilno zapisane vrednosti v funkcijah rgb(), rgba(), hsl() ali hsla().
  • Izbira barv brez upoštevanja preglednosti in kontrasta.

Barve na spletnih straneh najpogosteje določamo z uporabo CSS, na primer z lastnostmi color, background-color ali border-color. Pri izbiri barv moramo paziti tudi na dovolj dober kontrast med besedilom in ozadjem.