9.9. Właściwość zbiorcza background
Wprowadzenie: Ustawianie wielu właściwości tła naraz
W poprzednich lekcjach poznaliśmy wiele indywidualnych właściwości służących do kontrolowania różnych aspektów tła elementu (kolor, obraz, powtarzanie, pozycja, rozmiar, przypięcie, origin, clip).
CSS oferuje również właściwość zbiorczą (shorthand) background
, która pozwala ustawić **wszystkie te właściwości w jednej deklaracji**. Jest to bardzo wygodny i często stosowany sposób na zwięzłe definiowanie stylu tła.
Składnia właściwości background
Właściwość background
może przyjąć wartości dla następujących właściwości, w **dowolnej kolejności**, z kilkoma wyjątkami:
background-color
background-image
background-repeat
background-attachment
background-position
background-size
(musi być podane **po**background-position
, oddzielone ukośnikiem/
)background-origin
background-clip
Ważna zasada dotycząca background-size
: Jeśli chcesz ustawić background-size
w ramach shorthandu, musisz go podać bezpośrednio po wartości background-position
, oddzielając je ukośnikiem (/
). Na przykład: background: url(...) center / cover;
.
Ważna zasada dotycząca background-origin
i background-clip
: Jeśli podasz tylko jedną wartość typu "box" (padding-box
, border-box
, content-box
), zostanie ona zastosowana zarówno do background-origin
, jak i background-clip
. Jeśli podasz dwie wartości "box", pierwsza ustawi background-origin
, a druga background-clip
.
/* Przykłady użycia shorthandu background */
/* Tylko kolor */
.element1 {
background: lightblue;
}
/* Kolor i obrazek (niepowtarzalny, wycentrowany) */
.element2 {
background: lightgray url("icon.png") no-repeat center;
}
/* Obrazek jako pełne tło (cover) */
.element3 {
background: url("hero.jpg") no-repeat center center / cover;
/* Składnia: image repeat position / size */
/* Można pominąć powtórne center dla pozycji */
/* background: url("hero.jpg") no-repeat center / cover; */
}
/* Wiele obrazów tła z różnymi ustawieniami */
.element4 {
background:
/* Warstwa 1: logo */
url("logo.png") no-repeat left 10px top 10px / 50px, /* image repeat position / size */
/* Warstwa 2: gradient */
linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.8)),
/* Warstwa 3: tekstura */
url("texture.png") repeat;
/* Domyślny kolor tła pod wszystkimi warstwami */
background-color: #333;
/* Uwaga: background-color jest ustawiany osobno, gdy używamy wielu teł w shorthandzie */
}
/* Ustawienie origin i clip */
.element5 {
/* origin=content-box, clip=content-box */
background: url("icon.png") no-repeat content-box;
}
.element6 {
/* origin=border-box, clip=content-box */
background: url("icon.png") no-repeat border-box content-box;
}
Resetowanie wartości
Użycie właściwości zbiorczej background
ma ważny efekt uboczny: **resetuje wszystkie indywidualne właściwości tła do ich wartości domyślnych**, jeśli nie zostaną one jawnie podane w shorthandzie.
Na przykład, jeśli wcześniej ustawiłeś background-image
, a następnie użyjesz background: blue;
, to obraz tła zostanie usunięty (ponieważ domyślną wartością dla background-image
jest none
).
.box {
background-image: url("obrazek.jpg");
background-repeat: no-repeat;
background-color: lightyellow;
}
/* ... później w kodzie ... */
.box {
/* Ten styl nadpisze poprzednie! */
background: lightblue;
/* Efekt: tło będzie tylko jasnoniebieskie, obrazek zniknie, */
/* a repeat wróci do domyślnego 'repeat'. */
}
/* Poprawne nadpisanie tylko koloru: */
.box {
background-color: lightblue; /* Zmienia tylko kolor, reszta pozostaje */
}
Dlatego ważne jest, aby używać shorthandu świadomie. Jest on świetny do inicjalnego ustawienia tła, ale do modyfikacji pojedynczych aspektów tła lepiej używać indywidualnych właściwości.
Wiele teł w shorthandzie
Jak pokazano w przykładzie .element4
, można definiować wiele warstw tła za pomocą shorthandu, oddzielając definicje poszczególnych warstw przecinkami. Należy jednak pamiętać, że:
- Właściwość
background-color
może być zdefiniowana tylko **raz**, dla **ostatniej** (najniższej) warstwy tła. Zazwyczaj ustawia się ją osobno, poza shorthandem, dla większej czytelności. - Dla każdej warstwy można podać odpowiednie wartości
background-image
,background-repeat
,background-attachment
,background-position
,background-size
,background-origin
,background-clip
.
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Użyj właściwości zbiorczej background
, aby ustawić dla elementu div
jasnozielone tło (#e0ffe0
) oraz obrazek icon.png
, który nie będzie się powtarzał i będzie umieszczony w prawym dolnym rogu.
Rozwiązanie:
HTML:
<div class="shorthand-box"></div>
CSS:
.shorthand-box {
width: 250px;
height: 150px;
border: 1px solid darkgreen;
background: #e0ffe0 url("icon.png") no-repeat right bottom;
/* Składnia: color image repeat position */
}
Efekt: Pudełko będzie miało jasnozielone tło, a ikona pojawi się jednokrotnie w jego prawym dolnym rogu.
Zadanie 2 (do samodzielnego wykonania)
Użyj właściwości zbiorczej background
, aby ustawić obraz tła, który pokryje cały element (cover
) i będzie wycentrowany. Nie ustawiaj koloru tła w shorthandzie.
Zadanie 3 (do samodzielnego wykonania)
Ustaw tło za pomocą indywidualnych właściwości (np. background-image
, background-color
). Następnie, w kolejnej regule CSS, użyj shorthandu background
, aby ustawić tylko inny kolor tła. Zaobserwuj, co stało się z obrazem tła.
FAQ - Najczęściej zadawane pytania
Czy kolejność wartości w background
ma znaczenie?
Generalnie nie, z wyjątkiem pary background-position / background-size
, gdzie rozmiar musi być po pozycji i oddzielony ukośnikiem. Również jeśli podajesz dwie wartości "box" dla origin
i clip
, pierwsza jest dla origin
, druga dla clip
. W pozostałych przypadkach przeglądarka potrafi rozpoznać wartości na podstawie ich typu (kolor, url, słowo kluczowe dla repeat/attachment itp.).
Co jeśli pominę jakąś wartość w shorthandzie?
Jeśli pominiesz wartość dla którejś z właściwości tła (np. nie podasz background-repeat
), zostanie ona ustawiona na swoją **wartość domyślną** (dla background-repeat
jest to repeat
). Dlatego shorthand resetuje niepodane jawnie właściwości.
Czy mogę użyć background: none;
?
Tak, background: none;
jest poprawnym zapisem. Resetuje on wszystkie właściwości tła do ich wartości domyślnych, w tym ustawia background-image
na none
i background-color
na transparent
. Jest to skuteczny sposób na całkowite usunięcie tła z elementu.
Kiedy lepiej używać shorthandu, a kiedy indywidualnych właściwości?
Shorthand background
jest idealny do **inicjalnego ustawienia** stylu tła, zwłaszcza gdy ustawiasz wiele właściwości naraz (np. obrazek, jego pozycję i rozmiar). Indywidualne właściwości (np. background-color
, background-position
) są lepsze do **nadpisywania lub modyfikowania** tylko jednego aspektu tła, bez resetowania pozostałych.