5.5. Kolor tekstu (color
)
Wprowadzenie: Nadawanie koloru literom
Właściwość color
w CSS służy do ustawiania koloru pierwszoplanowego (foreground color) zawartości tekstowej elementu. Jest to jedna z najbardziej podstawowych i najczęściej używanych właściwości CSS, fundamentalna dla wyglądu i czytelności strony.
Wartością właściwości color
może być dowolny poprawny format koloru CSS, który poznaliśmy w poprzednim rozdziale (Rozdział 4: Jednostki i Kolory w CSS).
Użycie właściwości color
Właściwość color
stosuje się do selektora elementu, którego tekst chcemy pokolorować.
Przykłady użycia różnych formatów kolorów:
/* Użycie nazw kolorów */
p {
color: black;
}
.ostrzezenie {
color: red;
}
/* Użycie kodów HEX */
h1 {
color: #333; /* Ciemnoszary */
}
a {
color: #007bff; /* Niebieski */
}
/* Użycie RGB */
.sukces {
color: rgb(40, 167, 69); /* Zielony */
}
/* Użycie RGBA (dla półprzezroczystego tekstu - rzadziej stosowane, może pogorszyć czytelność) */
.subtelny-tekst {
color: rgba(0, 0, 0, 0.6); /* Ciemnoszary, 60% krycia */
}
/* Użycie HSL */
.informacja {
color: hsl(180, 100%, 35%); /* Ciemny cyjan */
}
/* Użycie HSLA */
.placeholder-text {
color: hsla(0, 0%, 50%, 0.7); /* Półprzezroczysty szary */
}
/* Użycie currentColor (dziedziczenie koloru) */
button {
color: white;
background-color: blue;
}
button svg {
/* Ikona SVG wewnątrz przycisku przyjmie kolor tekstu przycisku (biały) */
fill: currentColor;
}
Dziedziczenie koloru tekstu
Właściwość color
jest **dziedziczona**. Oznacza to, że jeśli nie ustawisz jawnie koloru dla elementu, przyjmie on obliczoną wartość właściwości color
swojego elementu nadrzędnego (rodzica).
Dlatego często wystarczy ustawić bazowy kolor tekstu dla elementu body
, a większość elementów na stronie (paragrafy, listy, itp.) automatycznie go odziedziczy.
body {
color: #212529; /* Ustawienie bazowego koloru tekstu dla całej strony */
font-family: sans-serif;
}
h1 {
/* H1 nie ma zdefiniowanego koloru, więc odziedziczy #212529 z body */
font-size: 2.5rem;
}
p {
/* Paragrafy również odziedziczą kolor z body */
line-height: 1.6;
}
.akcent {
/* Ten element ma jawnie ustawiony inny kolor */
color: darkorange;
}
.akcent span {
/* Span wewnątrz .akcent odziedziczy kolor darkorange */
font-weight: bold;
}
Kolor tekstu a dostępność (Kontrast)
Wybierając kolor tekstu, **niezwykle ważne jest zapewnienie odpowiedniego kontrastu** między kolorem tekstu a kolorem tła (background-color
), na którym jest wyświetlany. Niski kontrast utrudnia lub uniemożliwia odczytanie treści osobom słabowidzącym, a także może być męczący dla oczu wszystkich użytkowników.
Wytyczne dotyczące dostępności treści internetowych (WCAG - Web Content Accessibility Guidelines) definiują minimalne wymagania dotyczące współczynnika kontrastu:
- Poziom AA (minimalny):
- Współczynnik kontrastu co najmniej 4.5:1 dla normalnego tekstu.
- Współczynnik kontrastu co najmniej 3:1 dla dużego tekstu (18pt/24px lub 14pt/18.5px pogrubiony).
- Poziom AAA (rozszerzony):
- Współczynnik kontrastu co najmniej 7:1 dla normalnego tekstu.
- Współczynnik kontrastu co najmniej 4.5:1 dla dużego tekstu.
Istnieje wiele narzędzi online i wbudowanych w przeglądarki (np. w narzędziach deweloperskich), które pozwalają sprawdzić współczynnik kontrastu między dwoma kolorami.
Przykłady:
- Czarny tekst (
#000000
) na białym tle (#FFFFFF
) ma maksymalny kontrast 21:1 (bardzo dobry). - Szary tekst (
#777777
) na białym tle (#FFFFFF
) ma kontrast 4.6:1 (spełnia AA dla normalnego tekstu). - Jasnoszary tekst (
#CCCCCC
) na białym tle (#FFFFFF
) ma kontrast 1.6:1 (zbyt niski, niespełniający wymagań). - Biały tekst (
#FFFFFF
) na niebieskim tle (#007bff
) ma kontrast 4.2:1 (spełnia AA dla dużego tekstu, ale nie dla normalnego).
Zawsze testuj kontrast kolorów, aby zapewnić czytelność i dostępność Twojej strony!
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Ustaw domyślny kolor tekstu dla całej strony (body
) na ciemnoszary (np. #343a40
). Następnie ustaw kolor dla wszystkich linków (a
) na niebieski (np. #0056b3
).
Rozwiązanie:
CSS:
body {
color: #343a40;
}
a {
color: #0056b3;
text-decoration: none; /* Opcjonalnie: usunięcie podkreślenia */
}
a:hover {
color: #003d80; /* Ciemniejszy niebieski po najechaniu */
text-decoration: underline; /* Dodanie podkreślenia po najechaniu */
}
Efekt: Większość tekstu na stronie będzie ciemnoszara, a linki będą niebieskie (i zmienią kolor/podkreślenie po najechaniu).
Zadanie 2 (do samodzielnego wykonania)
Stwórz element div
z klasą .error-message
. Nadaj mu czerwone tło (background-color
) i biały kolor tekstu (color
). Sprawdź za pomocą narzędzia online lub w przeglądarce, czy kontrast między tymi kolorami spełnia co najmniej poziom AA WCAG.
Zadanie 3 (do samodzielnego wykonania)
Masz element button
z ikoną SVG wewnątrz. Ustaw color
przycisku na zielony. Użyj currentColor
, aby kolor wypełnienia (fill
) ikony SVG automatycznie dopasował się do koloru tekstu przycisku.
FAQ - Najczęściej zadawane pytania
Jaka jest domyślna wartość właściwości color
?
Domyślna wartość color
zależy od przeglądarki i systemu operacyjnego, ale zazwyczaj jest to czarny (#000000
). Jednak ponieważ color
jest dziedziczona, elementy zazwyczaj przyjmują kolor ustawiony dla elementu body
lub innego przodka.
Czy color
wpływa tylko na tekst?
Głównie tak, ale color
wpływa również na inne elementy, które domyślnie używają koloru tekstu, np. domyślny kolor obramowania (jeśli nie ustawiono border-color
), czy wartość currentColor
. Może też wpływać na wygląd niektórych elementów formularzy lub punktorów list.
Jak znaleźć dobre, kontrastowe kolory?
Istnieje wiele narzędzi online (np. Adobe Color, Coolors.co, WebAIM Contrast Checker), które pomagają w doborze palet kolorów i sprawdzaniu kontrastu. Narzędzia deweloperskie przeglądarek (np. w Chrome, Firefox) często mają wbudowane funkcje sprawdzania kontrastu bezpośrednio na stronie.
Czy przezroczysty tekst (np. rgba(0,0,0,0.5)
) jest dobrym pomysłem?
Raczej nie. Ustawianie przezroczystości dla samego tekstu za pomocą rgba()
lub hsla()
prawie zawsze pogarsza kontrast i czytelność. Jeśli chcesz uzyskać efekt subtelniejszego tekstu, lepiej użyć jaśniejszego odcienia koloru (np. szarego zamiast półprzezroczystego czarnego) i upewnić się, że kontrast z tłem jest wystarczający.