9.1. Kolor tła (background-color
)
Wprowadzenie: Nadawanie koloru tłu
Jedną z podstawowych technik stylizowania elementów jest nadanie im koloru tła. W CSS służy do tego właściwość background-color
.
Pozwala ona określić jednolity kolor, który wypełni całą przestrzeń tła elementu, włączając w to jego wypełnienie (padding), ale nie obejmując marginesów (margin). Tło jest rysowane pod treścią elementu i pod jego obramowaniem (border), jeśli obramowanie nie jest w pełni kryjące.
Wartości background-color
Właściwość background-color
akceptuje wartości kolorów zdefiniowane w CSS. Możemy używać tych samych metod definiowania kolorów, które poznaliśmy w Rozdziale 4 (Jednostki i Kolory):
- Nazwy kolorów: Predefiniowane nazwy jak
red
,blue
,green
,lightgray
,transparent
. - Wartości HEX: Szesnastkowe zapisy kolorów, np.
#FF0000
(czerwony),#00FF00
(zielony),#333
(ciemnoszary). - Wartości RGB/RGBA: Definiowanie koloru za pomocą składowych czerwonej, zielonej i niebieskiej (0-255) oraz opcjonalnie kanału alfa (przezroczystości, 0-1), np.
rgb(255, 0, 0)
,rgba(0, 0, 255, 0.5)
(półprzezroczysty niebieski). - Wartości HSL/HSLA: Definiowanie koloru za pomocą barwy (hue), nasycenia (saturation) i jasności (lightness) oraz opcjonalnie kanału alfa, np.
hsl(120, 100%, 50%)
(zielony),hsla(0, 100%, 50%, 0.7)
(półprzezroczysty czerwony). transparent
: Specjalna wartość oznaczająca przezroczyste tło. Jest to wartość domyślna dla większości elementów.currentColor
: Używa bieżącej wartości właściwościcolor
(koloru tekstu) elementu jako koloru tła.
<div class="box bg-red">Czerwone tło (nazwa)</div>
<div class="box bg-hex">Niebieskie tło (HEX)</div>
<div class="box bg-rgba">Półprzezroczyste zielone tło (RGBA)</div>
<div class="box bg-hsl">Żółte tło (HSL)</div>
<div class="box bg-transparent">Przezroczyste tło</div>
.box {
padding: 15px;
margin-bottom: 10px;
border: 1px dashed gray;
color: black; /* Domyślny kolor tekstu */
}
.bg-red {
background-color: red;
color: white; /* Zmiana koloru tekstu dla czytelności */
}
.bg-hex {
background-color: #0000FF; /* Niebieski */
color: white;
}
.bg-rgba {
background-color: rgba(0, 255, 0, 0.5); /* Półprzezroczysty zielony */
/* Tekst pod spodem będzie prześwitywał */
}
.bg-hsl {
background-color: hsl(60, 100%, 50%); /* Żółty */
}
.bg-transparent {
background-color: transparent; /* Domyślne, tło będzie takie jak tło rodzica */
}
Obszar pokrycia tła
Domyślnie, background-color
wypełnia obszar zawartości (content) oraz wypełnienia (padding) elementu. Można to zmienić za pomocą właściwości background-clip
, którą omówimy później w tym rozdziale.
Tło jest rysowane pod obramowaniem (border). Jeśli obramowanie jest częściowo przezroczyste (np. border: 5px dotted red;
) lub ma przerwy, kolor tła będzie widoczny pod nim.
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Nadaj elementowi <body>
jasnoszary kolor tła (np. #f0f0f0
), a głównemu kontenerowi strony (np. <div class="container">
) biały kolor tła (#ffffff
).
Rozwiązanie:
CSS:
body {
background-color: #f0f0f0; /* Jasnoszare tło całej strony */
font-family: sans-serif;
margin: 0;
}
.container { /* Zakładając, że masz taki kontener w HTML */
width: 90%;
max-width: 960px;
margin: 20px auto;
background-color: #ffffff; /* Białe tło dla treści */
padding: 20px;
border: 1px solid #ccc;
}
Efekt: Cała strona będzie miała jasnoszare tło, a główna treść będzie wyróżniona na białym tle wewnątrz kontenera.
Zadanie 2 (do samodzielnego wykonania)
Stwórz trzy elementy div
. Pierwszemu nadaj tło za pomocą nazwy koloru, drugiemu za pomocą wartości HEX, a trzeciemu za pomocą RGBA z przezroczystością 0.7.
Zadanie 3 (do samodzielnego wykonania)
Stwórz element button
. Nadaj mu ciemnoniebieski kolor tła i biały kolor tekstu. Zobacz, jak background-color
wpływa na wygląd przycisku.
FAQ - Najczęściej zadawane pytania
Jaka jest różnica między background-color
a background
?
background-color
ustawia tylko kolor tła. background
jest właściwością zbiorczą (shorthand), która pozwala ustawić wiele właściwości tła jednocześnie (kolor, obrazek, pozycję, powtarzanie itp.) w jednej deklaracji. Jeśli użyjesz background: red;
, ustawisz kolor tła na czerwony, ale zresetujesz inne właściwości tła (jak obrazek) do ich wartości domyślnych.
Czy mogę nadać gradient jako background-color
?
Nie bezpośrednio. Gradienty w CSS są traktowane jako typ obrazu (<gradient>
) i ustawia się je za pomocą właściwości background-image
(lub zbiorczej background
), np. background-image: linear-gradient(red, blue);
. Nie można ich przypisać do background-color
.
Jak ustawić przezroczyste tło?
Użyj wartości transparent
(background-color: transparent;
) lub wartości RGBA/HSLA z kanałem alfa ustawionym na 0 (np. background-color: rgba(0, 0, 0, 0);
). Spowoduje to, że tło elementu będzie całkowicie przezroczyste, odsłaniając tło elementu nadrzędnego.
Czy background-color
wpływa na elementy inline?
Tak, background-color
działa również na elementach inline (np. <span>
, <a>
, <strong>
). Tło zostanie zastosowane tylko do obszaru zajmowanego przez tekst (lub inną zawartość inline) w każdej linii.