Jak zapisać kolor nazwą, szesnastkowo, funkcją rgb i hsl, czym różnią się jednostki px, em, rem, procent i vw oraz które właściwości font i text ustawiają krój czcionki, rozmiar, wysokość wiersza i wyrównanie tekstu. Lekcja 4.4 kursu INF.03.
Wartość to ta część deklaracji CSS, która stoi po dwukropku: kolor, długość albo nazwa kroju pisma. Ta sama barwa ma kilka zapisów, więc Blue, #0000FF i rgb(0, 0, 255) dają ten sam niebieski. W części pisemnej wracają pytania „jaki kolor daje ten zapis", „jak zapisać zielony w notacji skróconej", „którą właściwością deklaruje się krój czcionki", „czym uzyskać wcięcie pierwszej linii akapitu". W zadaniu praktycznym arkusz podaje kolory nazwami CSS i szesnastkowo, rozmiar czcionki nagłówka w procentach, a wysokość wiersza w pikselach.
Kolory: nazwa, zapis szesnastkowy, rgb i hsl
Kolor w CSS to wartość opisująca barwę, zapisywana na kilka sposobów prowadzących do tego samego piksela na ekranie.
Nazwa koloru to gotowe słowo ze standardowej listy CSS, liczącej 147 pozycji. Arkusze CKE korzystają z nazw chętnie, bo są krótkie i czytelne w poleceniu: DeepSkyBlue, Tomato, Maroon, Teal, DarkSlateGray. Wielkość liter nie ma znaczenia, ale nazwę z arkusza przepisuje się co do znaku: przeglądarka pomija niezrozumiałą deklarację bez ostrzeżenia.
Zapis szesnastkowy to krzyżyk i sześć cyfr systemu szesnastkowego w postaci #RRGGBB, po dwie cyfry na kanał: czerwony, zielony, niebieski. Dwie cyfry biegną od 00 do FF, czyli od 0 do 255 dziesiętnie, więc każdy kanał ma 256 poziomów jasności.
Zapis skrócony #RGB ma trzy cyfry i każda podwaja się przy odczycie: #0F0 znaczy #00FF00. Skrótem zapisuje się wyłącznie kolory, w których obie cyfry kanału są takie same, więc #FF6347 skrótu nie ma. Uwaga na nazwy: #00FF00 to w CSS Lime, a Green należy do ciemniejszego #008000, choć pytania mówią o obu po prostu „zielony".
Funkcja rgb() podaje te same kanały dziesiętnie, po przecinku: rgb(0, 128, 0). Funkcja rgba() dopisuje czwartą liczbę, przezroczystość od 0 do 1, więc rgba(255, 99, 71, 0.5) przepuszcza tło do połowy. To samo daje ośmiocyfrowy zapis #RRGGBBAA, a transparent to kolor całkowicie przezroczysty.
Funkcja hsl() opisuje barwę inaczej niż mieszanie świateł: odcień na kole barw w stopniach od 0 do 360 (0 czerwony, 120 zielony, 240 niebieski), nasycenie w procentach (przy 0 procent zostaje szarość) i jasność w procentach (0 procent to czerń, 100 procent biel). hsl(120, 100%, 25%) to ten sam kolor co #008000, rozjaśniany samą zmianą trzeciej liczby.
Przeliczenie zapisu szesnastkowego na dziesiętny idzie kanał po kanale. W #008000 pierwsza para to 00, czyli 0 czerwonego. Druga para to 80: pierwsza cyfra stoi na pozycji szesnastek, więc 8 razy 16 daje 128 zielonego. Trzecia para to znowu 00, i stąd rgb(0, 128, 0). Litery A do F znaczą 10 do 15, więc FF to 15 razy 16 plus 15, czyli 255. Rachunek sprawdzi konwerter systemów liczbowych. Ekran miesza światła w modelu RGB (czerwony, zielony, niebieski), a druk farby w modelu CMYK (cyjan, magenta, żółty, czarny), więc barwa dobrana na monitorze nie wychodzi na papierze tak samo; modele barw opisuje dział grafika. Kolor
Zapis szesnastkowy
Funkcja rgb
White
#FFFFFF
rgb(255, 255, 255)
Blue
#0000FF
rgb(0, 0, 255)
Lime
#00FF00
rgb(0, 255, 0)
Green
#008000
rgb(0, 128, 0)
Tomato
#FF6347
rgb(255, 99, 71)
DeepSkyBlue
#00BFFF
rgb(0, 191, 255)
Teal
#008080
rgb(0, 128, 128)
Maroon
#800000
rgb(128, 0, 0)
DarkSlateGray
#2F4F4F
rgb(47, 79, 79)
Pułapka: color ustawia kolor tekstu, tło ma osobną właściwość background-color, więc div { color: blue; } daje niebieskie litery na niezmienionym tle.
Jednostki: px, procent, em, rem, vw
Jednostka to przyrostek dopisany do liczby, który mówi, względem czego mierzy się długość.
Jednostki bezwzględne mają stały rozmiar. px (piksel) to podstawowa jednostka ekranu i to jej używa arkusz, pisząc „wysokość banera 80 px" albo „wysokość wiersza 30 px". Do druku służą pt (punkt typograficzny, jedna siedemdziesiąta druga część cala), cm i in (cal), a w pytaniu o jednostkę w punktach edytorskich odpowiedzią jest pt.
Jednostki względne liczą się od czegoś innego i dlatego skalują się razem ze stroną. % (procent) odnosi się do elementu nadrzędnego: width: 30% daje panel szeroki na trzydzieści procent bloku, w którym stoi, a font-size: 150% litery półtora raza większe. em liczy się od rozmiaru czcionki tego samego elementu, więc przy czcionce 16 px 2em znaczy 32 px, ale w zagnieżdżonych blokach mnoży się z poziomu na poziom. rem liczy się od czcionki elementu html, domyślnie od 16 px, i przy zagnieżdżaniu się nie zmienia. vw i vh to procent szerokości i wysokości okna przeglądarki, więc 100vh daje blok wysoki na cały ekran.
Część wartości pisze się bez jednostki: line-height: 1.5 znaczy półtora raza wysokość czcionki elementu, a font-weight: 700 i z-index: 3 to liczby z własnej skali. Zero jednostki nie potrzebuje, więc margin: 0 jest poprawne.
Jednostka
Liczona względem
Przykład
px
stałego piksela ekranu
line-height: 30px
pt
punktu typograficznego, zapis do druku
font-size: 12pt
%
wartości elementu nadrzędnego
font-size: 150%
em
rozmiaru czcionki tego elementu
padding: 2em
rem
rozmiaru czcionki elementu html
font-size: 1.5rem
vw
szerokości okna przeglądarki
width: 50vw
vh
wysokości okna przeglądarki
height: 100vh
bez jednostki
mnożnika albo własnej skali właściwości
line-height: 1.5
Pułapka: między liczbą a jednostką nie ma spacji. padding: 10px działa, a padding: 10 px i padding: 10 są pomijane; arkusz pisze „10 px" po polsku, w kodzie spacja znika.
Krój i rozmiar: właściwości font
Właściwości z przedrostkiem font opisują samo pismo: jakim krojem, jak dużym, jak grubym i czy pochylonym zapisany jest tekst.
font-family deklaruje krój czcionki i to ona jest odpowiedzią na pytanie o deklarację kroju. Podaje się listę zapasową po przecinku, bo przeglądarka bierze pierwszy krój dostępny w systemie: font-family: Helvetica, Arial, sans-serif; sięga po Helvetikę, w jej braku po Arial, a gdy nie ma i jej, po dowolny krój bezszeryfowy. Ostatnia pozycja listy to zawsze rodzina ogólna: serif (pismo szeryfowe, z ozdobnymi zakończeniami kresek), sans-serif (bezszeryfowe), monospace (maszynowe, znaki tej samej szerokości).
font-size ustawia rozmiar czcionki: długość (16px, 12pt, 1.2em), procent liczony od elementu nadrzędnego (150%) albo słowo kluczowe ze zbioru xx-small, x-small, small, medium (wartość domyślna), large, x-large, xx-large, a do tego smaller i larger.
Odmianę pisma zmieniają trzy właściwości. font-weight (grubość) przyjmuje bold albo liczbę, gdzie 400 to grubość zwykła, a 700 odpowiada wartości bold. font-style przyjmuje normal, italic (kursywa) i oblique. font-variant: small-caps zamienia małe litery na kapitaliki, czyli wielkie w rozmiarze małych. Skrót font mieści to razem w stałej kolejności: font: italic bold 16px/1.5 Arial, sans-serif; daje pochyloną i pogrubioną szesnastkę z wysokością wiersza półtora, a części pominięte wracają do wartości domyślnych.
Krój spoza systemu użytkownika trzeba dostarczyć ze stroną: reguła @font-face nadaje własną nazwę plikowi czcionki wskazanemu przez src, a Google Fonts daje gotowy odnośnik do sekcji nagłówkowej i nazwę do font-family.
Wygląd tekstu: właściwości text i pokrewne
Właściwości z przedrostkiem text opisują nie samo pismo, tylko ułożenie i ozdobienie tekstu w bloku, a razem z nimi chodzą color, line-height, letter-spacing i word-spacing.
text-align wyrównuje tekst w poziomie: left, right, center (wyśrodkowanie, o które prosi arkusz zdaniem „tekst wyśrodkowany") oraz justify (wyjustowanie, czyli wyrównanie do obu krawędzi). text-decoration dokłada linię: underline (podkreślenie), overline (nadkreślenie), line-through (przekreślenie) albo none, którym zdejmuje się domyślne podkreślenie odnośników w menu. text-transform zmienia wielkość liter: uppercase (same wielkie), lowercase (same małe), capitalize (wielka pierwsza litera każdego wyrazu). text-indent robi wcięcie pierwszej linii akapitu, a text-shadow rysuje cień liter.
Odstępy mają trzy osobne właściwości i to one mylą się najczęściej. line-height to wysokość wiersza, letter-spacing rozsuwa pojedyncze znaki, dając efekt rozstrzelenia liter, a word-spacing ustawia odstępy między wyrazami.
vertical-align wyrównuje w pionie, ale działa tylko w komórkach tabeli i w elementach liniowych: przyjmuje top, middle, bottom, baseline (linia pisma) oraz sub i super, czyli indeks dolny i górny. white-space: nowrap zabrania łamania tekstu na kolejne wiersze.
Właściwość
Znaczy
Przykładowe wartości
color
kolor liter
#222, Tomato, rgb(255, 0, 0)
text-align
wyrównanie w poziomie
left, center, right, justify
text-decoration
linia dodana do tekstu
underline, overline, line-through, none
text-transform
wielkość liter
uppercase, lowercase, capitalize
text-indent
wcięcie pierwszej linii
30px, 2em
text-shadow
cień liter
2px 2px 4px Gray
line-height
wysokość wiersza
30px, 1.5, 150%
letter-spacing
odstępy między literami
2px, 0.1em
word-spacing
odstępy między wyrazami
10px
vertical-align
wyrównanie w pionie w komórce
top, middle, bottom, sub, super
white-space
łamanie wierszy
normal, nowrap
Styl tekstu w sklepie
Arkusz opisuje wygląd zdanie po zdaniu, więc każde zdanie zamienia się w jedną deklarację. Sklep komputerowy z działu o znacznikach sekcji dostaje krój Helvetica, powiększony nagłówek, menu bez podkreśleń i wyśrodkowaną tabelę cen. body {
font-family: Helvetica, Arial, sans-serif;
color: #222;
}
h1 {
font-size: 150%;
}
nav a {
text-decoration: none;
text-transform: uppercase;
}
td {
text-align: center;
letter-spacing: 2px;
}
body niesie krój i kolor tekstu w dół drzewa dokumentu, bo obie właściwości są dziedziczone, więc „krój Helvetica dla wszystkich selektorów" wystarczy zapisać raz. h1 dostaje 150 procent, czyli półtora raza więcej niż tekst wokół, a nie 150 pikseli. nav a zdejmuje domyślne podkreślenie odnośników i pokazuje pozycje menu wielkimi literami, choć w kodzie HTML stoją napisane normalnie: text-transform zmienia wygląd, nie treść. td środkuje zawartość komórek tabeli cen i rozsuwa znaki, dzięki czemu ceny czytają się cyfra po cyfrze. Na egzaminie
Pytania pisemne o wartości mają kilka stałych kształtów. Kolor szesnastkowy do rozpoznania: #0000FF to niebieski, bo pełny jest wyłącznie ostatni kanał, a #008000 po przeliczeniu daje rgb(0, 128, 0). Zielony w notacji skróconej to #0F0, bo #F00 jest czerwony, #00F niebieski, a #FFF biały. Kolor z krzyżykiem i sześcioma znakami jest zapisany szesnastkowo, a nie dziesiętnie ani w modelu CMYK. Właściwość do wskazania po opisie: krój czcionki deklaruje font-family (nie font-style ani font-face), pogrubienie daje font-weight (nie text-weight), kolor liter zmienia color, wcięcie pierwszej linii akapitu na 30 pikseli to p { text-indent: 30px; }, zamianę pierwszych liter wszystkich wyrazów na wielkie daje capitalize, odstępy między wyrazami ustawia word-spacing, a rozstrzelenie liter letter-spacing. Pytanie o zbiór wartości: text-decoration przyjmuje underline, overline i line-through, a font-size słowa kluczowe od xx-small do xx-large. Zapis font-family: Arial, Helvetica, sans-serif; daje tekst czcionką bezszeryfową, bo o rodzaju pisma mówi rodzina ogólna na końcu listy.
Dwie odpowiedzi mylą się regularnie. text-align wyrównuje w poziomie, a vertical-align w pionie i tylko w komórkach tabeli oraz elementach liniowych, więc wyśrodkowanie w pionie w komórce to vertical-align: middle, a text-align: middle nie istnieje. Druga pomyłka to line-height, letter-spacing i word-spacing podstawiane jedno za drugie: odstęp między wierszami, między znakami, między wyrazami.
W zadaniu praktycznym polecenie przekłada się zdanie po zdaniu. „Rozmiar czcionki nagłówka 150 procent" to font-size: 150%, a nie 150px. „Krój Helvetica dla wszystkich selektorów" zapisuje się raz, w regule dla body albo dla selektora uniwersalnego *. „Wysokość wiersza 30 px" to line-height: 30px, a „tekst wyśrodkowany" to text-align: center. Kolory przepisuje się z arkusza w podanej postaci, razem z krzyżykiem, bo 00838F bez niego kolorem nie jest, a cały styl idzie do zewnętrznego pliku, nie do atrybutu style, który kosztuje punkt za rezultat „styl CSS witryny internetowej".
Ściąga
color: Tomato
kolor tekstu podany nazwą CSS
#RRGGBB
kolor szesnastkowo, po dwie cyfry na kanał, od 00 do FF
#0F0
zapis skrócony, każda cyfra podwojona, tu #00FF00
rgb(0, 128, 0)
ten sam kolor dziesiętnie, kanały od 0 do 255
rgba(255, 99, 71, 0.5)
kolor z przezroczystością od 0 do 1
hsl(120, 100%, 25%)
odcień w stopniach, nasycenie, jasność
font-size: 150%
rozmiar czcionki liczony od elementu nadrzędnego
font-family: Arial, sans-serif
krój czcionki z krojem zapasowym i rodziną ogólną
font-weight: bold
pogrubienie, odpowiednik wartości 700
line-height: 30px
wysokość wiersza
text-align: center
wyrównanie tekstu w poziomie
text-decoration: none
zdjęcie podkreślenia odnośnika
text-transform: capitalize
wielka pierwsza litera każdego wyrazu
text-indent: 30px
wcięcie pierwszej linii akapitu
word-spacing: 10px
odstępy między wyrazami
vertical-align: middle
wyrównanie w pionie w komórce tabeli
Pobierz ściągę PDF