W CSS kolory można wyrażać na wiele sposobów, np. za pomocą słów kluczowych, notacji szesnastkowej RGB (zwanej też heksadecymalną), czy kilku typów notacji funkcyjnej. W tym rozdziale znajduje się opis różnych metod definiowania kolorów w CSS oraz objaśnienie paru najważniejszych pojęć związanych z barwami i ich opisami w specyfikacjach.
Do najważniejszych pojęć związanych z definiowaniem kolorów w CSS, których znajomość pozwala dokładnie zrozumieć wszystkie opisy barw, zaliczają się kanał alfa, przestrzeń barw, koło barw, paleta barw, gamut oraz RGB.
- Kanał alfa (ang. alpha channel)
- Dodatkowy składnik definicji koloru, który określa poziom jego przezroczystości. Jego wartość może być wyrażona za pomocą liczby całkowitej lub ułamkowej albo procentowo. Przedziały wartości to
0
–1.0
lub0–100%
. Wartość0
oznacza całkowitą przezroczystość, a wartość1.0
lub100%
oznacza całkowity brak przezroczystości. W CSS wartość kanału alfa zawsze jest podawana jako ostatni element definicji koloru. - Przestrzeń barw (ang. color space)
- Ustandaryzowany model barw postrzeganych przez ludzkie oko. Obecnie najbardziej rozpowszechnioną przestrzenią barw jest model sRGB, który odwzorowuje około 30% barw światła widzialnego. Oprócz niego istnieje wiele innych przestrzeni barw, np. HSB, Lab itd.
- Koło barw (ang. color wheel)
- Poglądowy model przedstawiający sposób mieszania się kolorów, na którym ukazane jest cykliczne przechodzenie kolorów, zaczynając od barwy fioletowej (najmniejsza długość fal promieniowania widzialnego), w kolejne kolory z widma promieniowania widzialnego zgodnie z ruchem wskazówek zegara. Poniżej jest pokazane koło barw przestrzeni sRGB:
Źródło ilustracji: 8 leaf-clover, praca własna, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=113344793
- Paleta barw (ang. color palette)
- Zbiór kolorów, jakie można uzyskać w określonym środowisku.
- Gamut (ang. gamut)
- Procent pokrycia przez urządzenie przestrzeni barw, tzn. określenie jaką część danej przestrzeni dane urządzenie jest w stanie zaprezentować. Na przykład w opisach monitorów można znaleźć informacje typu „Gamut: Adobe RGB 99%” – to znaczy, że dany monitor jest w stanie odwzorować 99% barw należących do przestrzeni Adobe RGB.
- RGB (ang. red, green, blue – czerwony, zielony, niebieski)
- Trzy podstawowe barwy, z których poprzez mieszanie w odpowiednich proporcjach uzyskuje się wszystkie inne barwy reprezentowane przez dane urządzenie.
W specyfikacjach CSS w opisach własności wartości kolorów są oznaczane symbolem <color>, tzn. jego obecność w opisie wartości oznacza, że dana własność przyjmuje dowolną obsługiwaną przez CSS definicję koloru jako wartość.
Poniżej znajduje się lista dostępnych metod definiowania kolorów w CSS:
- Słowa kluczowe
- Notacja heksadecymalna (szesnastkowa)
- Notacja funkcyjna
- Zmieszanie dwóch kolorów:
color-mix()
Słowa kluczowe
W CSS dostępne są trzy grupy słów kluczowych służących do określania kolorów. Najliczniejszą z nich stanowią nazwy kolorów, ale dodatkowo można używać tzw. kolorów systemowych oraz dwóch specjalnych słów kluczowych. Poniżej znajduje się opis ich wszystkich.
Nazwy kolorów CSS
Lista nazw kolorów w CSS jest bardzo długa. Ich zaletą jest to, że są czytelniejsze w kodzie źródłowym od innych sposobów zapisu. Na przykład nazwa koloru pink
wygląda o wiele bardziej przyjaźnie niż jej odpowiednik w szesnastkowej notacji RGB #FFC0CB
. Z kolei wadą nazw kolorów jest to, że ich liczba jest ograniczona i reprezentują one tylko bardzo niewielki podzbiór barw, jakich można używać w CSS.
Poniższa tabela zawiera wykaz nazw kolorów dostępnych w CSS wraz z ich próbkami.
Nazwa | Hex | |
---|---|---|
aliceblue | #f0f8ff | |
antiquewhite | #faebd7 | |
aqua | #00ffff | |
aquamarine | #7fffd4 | |
azure | #f0ffff | |
beige | #f5f5dc | |
bisque | #ffe4c4 | |
black | #000000 | |
blanchedalmond | #ffebcd | |
blue | #0000ff | |
blueviolet | #8a2be2 | |
brown | #a52a2a | |
burlywood | #deb887 | |
cadetblue | #5f9ea0 | |
chartreuse | #7fff00 | |
chocolate | #d2691e | |
coral | #ff7f50 | |
cornflowerblue | #6495ed | |
cornsilk | #fff8dc | |
crimson | #dc143c | |
cyan | #00ffff | |
darkblue | #00008b | |
darkcyan | #008b8b | |
darkgoldenrod | #b8860b | |
darkgray | #a9a9a9 | |
darkgreen | #006400 | |
darkgrey | #a9a9a9 | |
darkkhaki | #bdb76b | |
darkmagenta | #8b008b | |
darkolivegreen | #556b2f | |
darkorange | #ff8c00 | |
darkorchid | #9932cc | |
darkred | #8b0000 | |
darksalmon | #e9967a | |
darkseagreen | #8fbc8f | |
darkslateblue | #483d8b | |
darkslategray | #2f4f4f | |
darkslategrey | #2f4f4f | |
darkturquoise | #00ced1 | |
darkviolet | #9400d3 | |
deeppink | #ff1493 | |
deepskyblue | #00bfff | |
dimgray | #696969 | |
dimgrey | #696969 | |
dodgerblue | #1e90ff | |
firebrick | #b22222 | |
floralwhite | #fffaf0 | |
forestgreen | #228b22 | |
fuchsia | #ff00ff | |
gainsboro | #dcdcdc | |
ghostwhite | #f8f8ff | |
gold | #ffd700 | |
goldenrod | #daa520 | |
gray | #808080 | |
green | #008000 | |
greenyellow | #adff2f | |
grey | #808080 | |
honeydew | #f0fff0 | |
hotpink | #ff69b4 | |
indianred | #cd5c5c | |
indigo | #4b0082 | |
ivory | #fffff0 | |
khaki | #f0e68c | |
lavender | #e6e6fa | |
lavenderblush | #fff0f5 | |
lawngreen | #7cfc00 | |
lemonchiffon | #fffacd | |
lightblue | #add8e6 | |
lightcoral | #f08080 | |
lightcyan | #e0ffff | |
lightgoldenrodyellow | #fafad2 | |
lightgray | #d3d3d3 | |
lightgreen | #90ee90 | |
lightgrey | #d3d3d3 | |
lightpink | #ffb6c1 | |
lightsalmon | #ffa07a | |
lightseagreen | #20b2aa | |
lightskyblue | #87cefa | |
lightslategray | #778899 | |
lightslategrey | #778899 | |
lightsteelblue | #b0c4de | |
lightyellow | #ffffe0 | |
lime | #00ff00 | |
limegreen | #32cd32 | |
linen | #faf0e6 | |
magenta | #ff00ff | |
maroon | #800000 | |
mediumaquamarine | #66cdaa | |
mediumblue | #0000cd | |
mediumorchid | #ba55d3 | |
mediumpurple | #9370db | |
mediumseagreen | #3cb371 | |
mediumslateblue | #7b68ee | |
mediumspringgreen | #00fa9a | |
mediumturquoise | #48d1cc | |
mediumvioletred | #c71585 | |
midnightblue | #191970 | |
mintcream | #f5fffa | |
mistyrose | #ffe4e1 | |
moccasin | #ffe4b5 | |
navajowhite | #ffdead | |
navy | #000080 | |
oldlace | #fdf5e6 | |
olive | #808000 | |
olivedrab | #6b8e23 | |
orange | #ffa500 | |
orangered | #ff4500 | |
orchid | #da70d6 | |
palegoldenrod | #eee8aa | |
palegreen | #98fb98 | |
paleturquoise | #afeeee | |
palevioletred | #db7093 | |
papayawhip | #ffefd5 | |
peachpuff | #ffdab9 | |
peru | #cd853f | |
pink | #ffc0cb | |
plum | #dda0dd | |
powderblue | #b0e0e6 | |
purple | #800080 | |
rebeccapurple | #663399 | |
red | #ff0000 | |
rosybrown | #bc8f8f | |
royalblue | #4169e1 | |
saddlebrown | #8b4513 | |
salmon | #fa8072 | |
sandybrown | #f4a460 | |
seagreen | #2e8b57 | |
seashell | #fff5ee | |
sienna | #a0522d | |
silver | #c0c0c0 | |
skyblue | #87ceeb | |
slateblue | #6a5acd | |
slategray | #708090 | |
slategrey | #708090 | |
snow | #fffafa | |
springgreen | #00ff7f | |
steelblue | #4682b4 | |
tan | #d2b48c | |
teal | #008080 | |
thistle | #d8bfd8 | |
tomato | #ff6347 | |
turquoise | #40e0d0 | |
violet | #ee82ee | |
wheat | #f5deb3 | |
white | #ffffff | |
whitesmoke | #f5f5f5 | |
yellow | #ffff00 | |
yellowgreen | #9acd32 |
W specyfikacjach CSS nazwy kolorów są oznaczane symbolem <named-color>.
Kolory systemowe CSS
Słowa kluczowe kolorów systemowych odnoszą się do różnych domyślnych ustawień na stronie internetowej zdefiniowanych przez użytkownika, przeglądarkę lub system operacyjny i dlatego zazwyczaj można je znaleźć w domyślnych arkuszach stylów przeglądarek internetowych. Reagują one także na zmiany trybu przeglądarki między jasnym i ciemnym.
Ponadto w odniesieniu do kolorów systemowych należy pamiętać o tym, że przeglądarka może działać w tzw. trybie wymuszania kolorów (ang. forced colors). Został on wprowadzony w celu zwiększenia dostępności stron internetowych dla użytkowników z wadami wzroku – niektóre z takich osób najlepiej rozpoznają tekst, kiedy tworzy on odpowiedni kontrast z tłem (po to właśnie między innymi istnieje tryb o wysokim kontraście w systemie Windows).
Tryb wymuszania kolorów chroni użytkowników z wadami wzroku przed zmianą ich własnych ustawień lub ustawień standardowego trybu o wysokim kontraście, którego używają, przez arkusze stylów autora strony, ponieważ ignoruje on ustawienia kolorów niektórych własności CSS zdefiniowanych przez autora.
Aby dostosować swój arkusz stylów do działania w trybie wymuszania kolorów, można użyć zapytania o media forced-colors
:
Za pomocą tego zapytania sprawdzamy, czy aktywny jest tryb wymuszania kolorów i jeśli tak, to odpowiednio dostosowujemy nasze reguły CSS.
Poniższa tabela zawiera wykaz dostępnych kolorów systemowych w CSS.
Słowo kluczowe koloru systemowego | Opis |
---|---|
Canvas | Tło treści dokumentu lub aplikacji |
CanvasText | Tekst aplikacji lub dokumentu |
LinkText | Tekst nieaktywnych i nieodwiedzonych odnośników |
VisitedText | Tekst odwiedzonych odnośników |
ActiveText | Tekst aktywnych odnośników |
ButtonFace | Kolor tła przycisków |
ButtonText | Tekst na przyciskach |
ButtonBorder | Podstawowy kolor obramowania przycisków |
Field | Tło pól wejściowych |
FieldText | Tekst pól wejściowych |
Highlight | Tło zaznaczonego tekstu, np. z pseudoelementu ::selection |
HighlightText | Tekst zaznaczony |
SelectedItem | Tło wybranych elementów, np. zaznaczonych pól wyboru |
SelectedItemText | Tekst wybranych elementów |
Mark | Tło tekstu, który został specjalnie oznaczony (np. przez element HTML mark) |
MarkText | Tekst, który został specjalnie zaznaczony (np. przez element HTML mark). |
GrayText | Tekst nieaktywny |
AccentColor | Tło akcentowanych elementów interfejsu użytkownika |
AccentColorText | Tekst akcentowanych elementów interfejsu użytkownika |
Słowa kluczowe transparent i currentcolor
W CSS dostępne są dwa dodatkowe słowa kluczowe kolorów: transparent
i currentcolor
.
Słowo kluczowe transparent
reprezentuje kolor przezroczysty i jest odpowiednikiem wartości rgba(0,0,0,0)
.
Słowo kluczowe currentcolor
reprezentuje wartość własności color
danego elementu. Jest ono wartością początkową niektórych własności CSS, na przykład border-color
czy text-emphasis-color
, a więc za jego pomocą można sterować domyślnym ustawieniem tych własności.
Przestrzeń barw sRGB
Kolor w przestrzeni barw sRGB reprezentują trzy wartości, określające odpowiednio udział koloru czerwonego (ang. red), zielonego (ang. green) i niebieskiego (ang. blue) w kolorze wynikowym. W CSS są dostępne cztery metody definiowania kolorów w tej przestrzeni:
- Funkcje
rgb()
irgba()
- Notacja szesnastkowa (heksadecymalna)
- Fukcje
hsl()
ihsla()
- Funkcja
hwb()
- Słowa kluczowe nazw kolorów
- Słowo kluczowe
transparent
Dwie ostatnie metody z tej listy zostały opisane powyżej, a poniżej znajduje się zwięły opis pozostałych.
Funkcje rgb() i rgba()
Funkcja CSS rgb() umożliwia zdefiniowanie koloru przez bezpośrednie określenie każdego ze składników RGB oraz ewentualnie dodatek wartości kanału alfa (określającego poziom przezroczystości) na końcu, po ukośniku, np.:
Składnia funkcji rgb()
:
rgb(R G B [/ alfa]);
Opis parametrów:
- R, G i B: składowe czerwona, zielona i niebieska. Wartością każdej z nich może być liczba całkowita lub ułamkowa z przedziału od 0 do 255 lub wartość procentowa z przedziału od 0 do 100%. Typów wartości nie można mieszać, tzn. wszystkie wartości muszą być typu liczbowego lub procentowego.
- alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza ona całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Funkcja rgba()
jest starą wersją składni, która przyjmuje takie same parametry, jak funkcja rgb()
.
Ponadto dla zachowania zgodności wstecznej obsługiwana jest także stara wersja składni funkcji rgb()
, w której parametry są rozdzielane przecinkami. Na przykład:
Notacja szesnastkowa (heksadecymalna)
Notacja szesnastkowa, podobnie jak funkcje rgb()
i rgba()
, posługuje się systemem RGB. W jej przypadku kolory definiuje się za pomocą liczb szesnastkowych (heksadecymalnych). Choć bywa krytykowana za brak intuicyjności, wciąż jest bardzo często używana. Jej dokładniejszy opis znajduje się w Kursie HTML i CSS w podrozdziale Notacja szesnastkowa.
Funkcje hsl() i hsla()
Metoda RGB, mimo że bardzo rozpowszechniona, jest uważana za mało intuicyjną i trudną do zrozumienia przez człowieka. Dlatego opracowano kilka innych systemów definiowania kolorów, które mają na celu ułatwić dobór kolorów projektantom stron internetowych.
Do tej grupy należy między innymi notacja HSL (ang. hue, saturation, lightness – barwa, nasycenie, jasność), w której kolory definiuje się także za pomocą trzech składników, ale są to: barwa, nasycenie i jasność, np.:
Składnia funkcji hsl():
hsl(H S L [/ alfa]);
Opis parametrów:
- H: liczba całkowita lub ułamkowa albo wartość kąta określająca punkt na kole barw przestrzeni sRGB. Liczba jest traktowana jako wartość kąta w stopniach.
- S: wartość procentowa określająca poziom nasycenia. Wartość
100%
oznacza pełne nasycenie (żywy kolor), a0
oznacza całkowity brak nasycenia (szarość). - L: wartość procentowa określająca poziom jasności. Wartość
100%
oznacza biel,0
oznacza czerń, a50%
oznacza „normalną jasność”. - alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Funkcja hsla()
jest starą wersją składni, która przyjmuje takie same parametry, jak funkcja hsl()
.
Ponadto dla zachowania zgodności wstecznej obsługiwana jest także stara wersja składni funkcji hsl()
, w której parametry są rozdzielane przecinkami. Na przykład:
Funkcja hwb()
Metoda HWB (ang. hue, whiteness, blackness – barwa, białość, czarność) jest podobna do HSL i również powstała, aby ułatwić definiowanie kolorów projektantom. W metodzie tej także kolor określa się przez podanie trzech wartości: barwy, poziomu bieli oraz poziomu czerni, np.:
Składnia funkcji hwb()
:
hwb(H W B [/ alfa]);
Opis parametrów:
- H: liczba całkowita lub ułamkowa albo wartość kąta określające punkt na kole barw przestrzeni sRGB. Liczba jest traktowana jako wartość kąta w stopniach.
- W: wartość procentowa określająca poziom bieli. Wartość
0
oznacza brak bieli, a100%
– pełną biel. B: wartość procentowa określająca poziom czerni. Wartość
0
oznacza brak czerni, a100%
– pełną czerń.- alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Przestrzeń barw CIE Lab
Przestrzeń barw CIE Lab (spotykana jest też forma zapisu CIE L*a*b) to przestrzeń, która została znormalizowana przez Międzynarodową Komisję Oświetleniową (fr. Comission Internationale de l’Eclairage – CIE) w 1967 roku. Reprezentuje ona cały zakres kolorów widzianych przez ludzkie oko.
W przestrzeni tej definicja barwy składa się z trzech składowych: L (ang. lightness – jasność lub luminancja), a – barwa z zakresu od zieleni do magenty oraz b – barwa z zakresu od niebieskiej do żółtej.
W CSS kolory w przestrzeni barw CIE Lab można definiować za pomocą funkcji lab()
, np.:
Składnia funkcji lab()
:
lab(L a b [/ alfa]);
Opis parametrów:
- L: liczba całkowita lub ułamkowa z przedziału od 0 do 100 albo wartość procentowa z przedziału od 0 do 100% określająca poziom jasności. Wartość
0
odpowiada czerni, a wartość100
(lub100%
) reprezentuje biel. - a: liczba całkowita lub ułamkowa z przedziału od -125 do 125 albo wartość procentowa z przedziału od -100% do 100% określająca miejsce na osi a w przestrzeni barw Lab, która reprezentuje zakres barw od zielonej do magenty.
- b: liczba całkowita lub ułamkowa z przedziału od -125 do 125 albo wartość procentowa z przedziału od -100% do 100% określająca miejsce na osi b w przestrzeni barw Lab, która reprezentuje zakres barw od niebieskiej do żółtej.
- alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Przestrzeń barw LCH
Przestrzeń barw LCH (ang. Luminance, Chroma, Hue) to kolejny model reprezentujący zakres kolorów postrzeganych przez ludzkie oko. Jest to model cylindryczny.
Do definiowania kolorów w tej przestrzeni służy funkcja lch()
, która wykorzystuje tę samą oś jasności, co funkcja lab()
, ale dodatkowo określa chromatyczność (C) i barwę (H) za pomocą współrzędnych polarnych, np.:
Składnia funkcji lch()
:
lch(L C H [/ alfa]);
Opis parametrów:
- L: liczba całkowita lub ułamkowa z przedziału od 0 do 100 albo wartość procentowa z przedziału od 0 do 100% określająca poziom jasności CIE. Wartość
0
odpowiada czerni, a wartość100
(lub100%
) reprezentuje biel. - C: liczba całkowita lub ułamkowa albo wartość procentowa, gdzie
0%
oznacza0
, a100%
oznacza150
, określająca chromatyczność (w uproszczeniu „ilość koloru”). Minimalna użyteczna wartość wynosi0
. Maksymalna wartość jest teoretycznie nieograniczona, ale w praktyce nie przekracza230
. - H: liczba całkowita lub ułamkowa albo wartość kątowa określająca kąt barwy.
- alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Przestrzeń barw Oklab
Przestrzeń barw Oklab ma na celu naśladować sposób postrzegania kolorów przez ludzkie oko. Jest ona szersza od przestrzeni RGB, a jej gamut obejmuje kolory P3. Wśród jej najczęstszych zastosowań wymienia się przekształcanie obrazów na skalę szarości bez zmiany luminancji, modyfikację nasycenia kolorów bez zmiany barwy i luminancji oraz tworzenie płynnych gradientów.
Do definiowania kolorów w przestrzeni barw Oklab w CSS służy funkcja oklab()
, która wykorzystuje kartezjański układ współrzędnych w tej przestrzeni, a więc osie a oraz b, np.:
Składnia funkcji oklab()
:
oklab(L a b[ / alfa])
Opis parametrów:
- L: liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa z przedziału od 0 do 100%. Wartość
0
odpowiada0%
(czerń), a wartość1
odpowiada100%
(biel). Ten parametr określa jasność postrzeganą (ang. perceived lightness). - a: liczba całkowita lub ułamkowa albo wartość procentowa z przedziału od -100% do 100%. Wartości
-100%
odpowiada wartość liczbowa-0.4
, a wartości100%
odpowiada wartość liczbowa0.4
, ale można używać także wartości liczbowych spoza tego przedziału referencyjnego, choć w praktyce nie wychodzi się poza ±0,5. Ten parametr określa miejsce na osi a, czyli przesunięcie od zieleni ku czerwieni. - b: liczba całkowita lub ułamkowa albo wartość procentowa z przedziału od -100% do 100%. Wartości
-100%
odpowiada wartość liczbowa-0.4
, a wartości100%
odpowiada wartość liczbowa0.4
, ale można używać także wartości liczbowych spoza tego przedziału referencyjnego, choć w praktyce nie wychodzi się poza ±0,5. Ten parametr określa miejsce na osi b, czyli przesunięcie od niebieskiego do żółtego. - alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Przestrzeń barw Oklch
Oklch to kolejny model definowania kolorów dodany w module kolorów CSS4, który bazuje na ludzkiej percepcji. Do definiowania kolorów w tym modelu służy funkcja oklch()
, np.:
Składnia funkcji oklch()
:
oklch(L C H [/ alfa])
Opis parametrów:
- L: liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa z przedziału od 0 do 100%. Wartość
0
odpowiada0%
(czerń), a wartość1
odpowiada100%
(biel). Ten parametr określa jasność postrzeganą (ang. perceived lightness). - a: liczba całkowita lub ułamkowa albo wartość procentowa z przedziału od 0% do 100%. Wartości
0%
odpowiada wartość liczbowa0
, a wartości100%
odpowiada wartość liczbowa0.4
. Najmniejsza przydatna w praktyce wartość wynosi0
, a maksymalna wartość jest teoretycznie nieograniczona, chociaż w praktycznych zastosowaniach nie przekracza0.5
(wartość ujemna jest skracana do zera). Ten parametr określa chromatyczność (czyli w uproszczeniu mówiąc „ilość koloru”). - b: wartość kąta barwy. Różni się od analogicznej wartości funkcji
hsl()
ilch()
sposobem odwzorowania barw na kąty.0deg
(podobnie jak360deg
,720deg
itd.) wskazuje na dodatnią stronę osi a (w kierunku fioletowoczerwonego),90deg
wskazuje na dodatnią stronę osi b (w kierunku musztardowożółtego),180deg
wskazuje na ujemną stronę osi a (w kierunku zielonawoniebieskiego), a270deg
wskazuje na ujemną stronę osi b (w kierunku jasnoniebieskiego). - alfa: opcjonalny składnik określający poziom przezroczystości koloru. Jego wartością może być liczba całkowita lub ułamkowa z przedziału od 0 do 1 albo wartość procentowa. Wartość
1
jest równoważna z wartością100%
i oznacza całkowity brak przezroczystości. Brak tego parametru oznacza jego ustawienie na100%
.
Inne przestrzenie barw
Większość opisanych funkcji kolorów operuje w obrębie przestrzeni barw sRGB. Dlatego w CSS4 wprowadzono funkcję color()
, która umożliwia korzystanie także z kilku innych przestrzeni barw. Dzięki temu projektant może definiować kolory np. w szerokiej przestrzeni barw Display-P3 albo standardowo używanej przez fotografów przestrzeni Rec.2020.
Składnia funkcji color()
:
color(przestrzeńbarw p1 p2 p3 [/ alfa])
Opis parametrów:
- przestrzeńbarw: identyfikator określający jedną z kilku dostępnych przestrzeni barw:
srgb
,srgb-linear
,display-p3
,a98-rgb
,prophoto-rgb
,rec2020
,xyz
,xyz-d50
orazxyz-d65
. Od wybranej przestrzeni zależy, jakie wartości mogą przyjmować następne parametry. - p1, p2, p3: wartości definicji koloru w określonej przestrzeni barw.
- alfa: opcjonalny składnik określający poziom przezroczystości koloru.
Na przykład:
Połączenie dwóch kolorów
W module kolorów CSS5 wprowadzono funkcję color-mix()
, za pomocą której można zmieszać dwa kolory w określonych proporcjach i w wybranej przestrzeni barw, aby uzyskać nowy kolor, np.:
Składnia funkcji color-mix()
:
color-mix(metoda, kolor1[ p1], kolor2[ p2])
Opis parametrów:
metoda: metoda interpolacji kolorów w określonej przestrzeni barw. Ta wartość składa się z dwóch członów, z których drugi jest opcjonalny. Pierwszy człon (
in przestrzeńbarw
) określa przestrzeń barw, w której mają być mieszane kolory.Drugi człon określa algorytm interpolacji kolorów. Składa się on ze słowa
shorter
,longer
,increasing
lubdecreasing
oraz słowahue
.- kolor1, kolor2: wartości kolorów do zmieszania zdefiniowane w dowolny sposób.
- p1, p2: wartość procentowa określająca udział danej barwy w kolorze wynikowym.
Wystarczy zdefiniować jeden z tych parametrów, a drugi zostanie obliczony automatycznie przez odjęcie go od 100%, np.: jeśli parametr p1
ma wartość 30%
, to wartość parametru p2
wyniesie 100%
– 30%
czyli 70%
.
Jeśli żaden z tych parametrów nie zostanie określony, to każdemu z nich zostanie nadana wartość 50%
.
Jeśli natomiast suma wartości p1
i p2
jest mniejsza od 100%, to ich wartości są normalizowane do 100% wg następujących wzorów: p1
= p1
/ (p1
+ p2
) i p2
= p2
/ (p1
+ p2
).
Sprawdzanie obsługi przestrzeni barw
Aby sprawdzić, czy dana przeglądarka obsługuje interesującą nas przestrzeń barw, możemy użyć zapytania o media color-gamut
, np.:
Dostępne są trzy wartości przestrzeni barw, których można używać w teście: srgb
, p3
i rec2020
.