Składowe światła i farby, przezroczystość alfa, odcień i nasycenie oraz przeliczanie kolorów między zapisem RGB i szesnastkowym. Przykłady barw strony sklepu. Lekcja 5.3 kursu INF.03.
Model barw to sposób opisania koloru za pomocą określonych składowych liczbowych. Na egzaminie trzeba rozróżnić światło ekranu i farby drukarskie, odczytać wartości RGB oraz przeliczyć zapis szesnastkowy. W praktyce ten sam kolor może pojawić się w edytorze grafiki, w projekcie strony i w arkuszu CSS, więc trzeba rozumieć zapis, a nie kierować się wyłącznie podobieństwem próbek na monitorze.
RGB: dodawanie światła
RGB opisuje kolor przez udział czerwieni, zieleni i błękitu: red (czerwony), green (zielony), blue (niebieski). Jest modelem addytywnym, czyli opartym na dodawaniu światła. Brak wszystkich trzech składowych daje czerń, a ich maksymalne wartości dają biel. Dwie maksymalne składowe dają kolory wtórne: czerwony z zielonym żółć, zielony z niebieskim cyjan, czerwony z niebieskim magentę.
W popularnym zapisie ośmiobitowym każda składowa przyjmuje całkowitą wartość od 0 do 255. Zestaw trzech zer oznacza czerń, a trzech wartości 255 biel. Gdy wszystkie trzy liczby są jednakowe, otrzymujemy odcień szarości. Im większa wspólna wartość, tym jaśniejsza szarość. Przykładowo 128, 128, 128 nie jest zielenią, mimo że środkowa liczba także ma wartość 128.
1
2
3
body{background-color:rgb(255,255,255);}
header{background-color:rgb(0,128,128);}
footer{color:rgb(128,128,128);}
Pierwsza reguła ustawia białe tło, druga kolor Teal, czyli ciemny cyjan, a trzecia szary tekst. Równość dwóch składowych nie wystarcza do uzyskania szarości: muszą być równe wszystkie trzy. Nie należy też utożsamiać maksymalnej zielonej składowej RGB z nazwą CSS green, która ma wartość zieleni 128. Pełna zielona składowa odpowiada nazwie CSS lime.
Zapis szesnastkowy krok po kroku
Zapis szesnastkowy, nazywany hex (szesnastkowy), używa cyfr od 0 do 9 i liter od A do F. Litery oznaczają kolejno wartości od 10 do 15. W kolorze z sześcioma znakami pierwsza para opisuje czerwony kanał, druga zielony, a trzecia niebieski. Każdą parę zamienia się na liczbę dziesiętną oddzielnie.
Kolor #336699 rozkładamy na pary 33, 66 i 99. Pierwsza para daje 3 razy 16 plus 3, czyli 51. Druga daje 6 razy 16 plus 6, czyli 102. Trzecia daje 9 razy 16 plus 9, czyli 153. Odpowiednikiem jest zatem poniższa wartość:
1
nav{background-color:rgb(51,102,153);}
W drugą stronę dzielimy każdą składową przez 16. Dla wartości 217 iloraz całkowity wynosi 13, a reszta 9. Trzynaście zapisujemy literą D, więc otrzymujemy D9. Składowa 138 daje 8A, a 82 daje 52. Kolor o tych trzech składowych zapisujemy tak:
1
.przycisk{background-color:#D98A52;}
Wielkość liter nie zmienia wartości koloru. Skrót trzyznakowy powiela każdy znak: #369 rozwija się do #336699, a nie do #030609. Skrócenie jest możliwe tylko wtedy, gdy w każdej parze stoją takie same znaki. Koloru #D98A52 nie można zapisać trzema znakami bez zmiany jego wartości. Przeliczenia pojedynczych par można sprawdzić konwerterem systemów liczbowych.
RGBA: kolor i krycie
RGBA to RGB uzupełniony o kanał alfa, czyli stopień krycia. W funkcji CSS czwarta liczba 0 oznacza całkowitą przezroczystość, 1 pełne krycie, a 0,5 krycie częściowe. Tę samą składową można zapisać procentowo. Półprzezroczysta czerń na białym tle wygląda szaro, lecz na niebieskim tle daje inny rezultat, ponieważ ostateczny kolor zależy od tego, co znajduje się pod spodem.
1
.podpis{background-color:rgba(0,0,0,0.5);}
Ta reguła zmienia krycie samego koloru tła podpisu. Właściwość opacity (nieprzezroczystość) zastosowana do całego elementu wpływa również na jego tekst i potomków. Jeśli napis ma pozostać wyraźny, a przyciemnić ma się wyłącznie tło, lepszy jest kolor z alfą. To rozróżnienie pomaga także w edytorze grafiki: krycie warstwy oraz przezroczystość konkretnego piksela nie są tą samą operacją.
Ośmioznakowy zapis szesnastkowy dodaje na końcu parę alfa. Wartość 00 daje pełną przezroczystość, FF pełne krycie, a 80 około połowy. Kanał ośmiobitowy ma 256 poziomów, więc dokładne 50 procent nie ma idealnego całkowitego odpowiednika. Nie czytamy końcówki 80 jako osiemdziesięciu procent. Jej wartość dziesiętna to 128, którą odnosimy do 255.
CMYK: odejmowanie światła przez farby
CMYK opisuje farby: cyan (cyjan), magenta (magenta), yellow (żółty) i key (składowa czarna). Jest modelem subtraktywnym, czyli związanym z odejmowaniem składowych światła odbijanego od podłoża. Biała kartka bez farby odbija światło, a pokrywanie jej farbami zmienia to, które części światła docierają do oka. To inna sytuacja niż świecące piksele monitora.
W idealnym modelu połączenie cyjanu, magenty i żółci powinno dać czerń. W praktyce właściwości farb i podłoża sprawiają, że stosuje się osobny czarny składnik. Pomaga uzyskać odpowiednią czerń i drukować drobny czarny tekst bez składania go z kilku farb. Dodanie K do CMY jest typowym tematem pytania o różnicę między tymi modelami.
Kolor ekranu nie ma jednego bezwarunkowo identycznego odpowiednika w druku. Wynik zależy między innymi od profilu barwnego, czyli opisu interpretacji kolorów przez urządzenie lub proces druku. Dlatego baner sklepu przeznaczony do strony przygotowujemy do wyświetlania na ekranie, a plakat do drukarni według jej wymagań. Sama podmiana nazwy modelu nie gwarantuje zgodności próbek.
HSL i HSV: wybór odcienia
HSL opisuje barwę przez hue (odcień), saturation (nasycenie) i lightness (jasność). Odcień jest kątem na kole barw: 0 stopni to czerwień, 120 zieleń, 240 niebieski. Po 360 stopniach wracamy do czerwieni. Nasycenie 0 procent daje szarość, natomiast jasność 0 procent daje czerń, a 100 procent biel niezależnie od odcienia.
RGB opisuje trzy składowe światła, a HSL oddziela odcień, nasycenie i jasność; CMYK opisuje zestaw farb do druku.
Przy pełnym nasyceniu i jasności 50 procent HSL otrzymujemy intensywną barwę wskazanego odcienia. Nie należy uznawać, że jasność 50 procent zawsze oznacza szary. Dla zieleni w takim zapisie uzyskamy pełną zieloną składową RGB. Model jest wygodny przy tworzeniu palety, ponieważ można zachować odcień i osobno zmieniać jasność kolejnych próbek.
HSV ma także odcień i nasycenie, lecz trzecią składową jest value (wartość, jasność maksymalnej składowej). Ustawienie V na 100 procent nie musi dawać bieli: przy pełnym nasyceniu może dać intensywną czerwień. HSL i HSV to różne sposoby opisu, więc nie wolno bez przeliczenia przepisywać ich trzeciej liczby. Wybierak edytora może pokazywać HSV, podczas gdy CSS używa funkcji HSL.
Na egzaminie
Przy pytaniu o barwę z kodu najpierw oddziel kanały, potem przelicz pary. Przewaga kanału czerwonego sugeruje czerwonawy kolor, ale nie zastępuje rachunku. Dla #11FE07 otrzymujemy 17, 254 i 7, więc dominuje zieleń. W pytaniu o druk odpowiedzi RGB i CMYK rozdziela sposób tworzenia koloru, a nie liczba liter w skrócie.
Pułapka: HSL z jasnością 100 procent daje biel, lecz HSV z wartością 100 procent może nadal przedstawiać nasycony kolor.
W praktyce wpisz podany kod dokładnie w polu koloru lub arkuszu CSS. Próbka podobna na oko nie zastępuje wymaganej wartości. Składnię RGB, HSL, alfa i hex opisuje specyfikacja kolorów CSS W3C; znajomość tych zapisów pozwala porównać edytor i stronę bez zgadywania.