Własność CSS background-image umożliwia ustawienie jednego lub większej liczby obrazów graficznych w tle elementu.
Jeśli tych obrazów jest więcej niż jeden, to tworzą one kolejne warstwy, z których najbliższa użytkownikowi (na wierzchu) jest ta, która została zdefiniowana jako pierwsza. Na samym spodzie znajduje się warstwa koloru tła (definiowana za pomocą własności background-color), jeśli zostanie on określony.
Należy pamiętać, że własność background-image wstawia obrazy w tle elementów, a więc w obszarze, który z definicji nie stanowi najważniejszej części treści. Dlatego obrazy te nie powinny zawierać żadnych istotnych informacji, a jedynie stanowić detal dekoracyjny, którego brak nie byłby żadną stratą dla użytkownika.
Jest to istotne z punktu widzenia użytkowników z niepełnosprawnościami, którzy posługują się na przykład czytnikami ekranu – te programy nie mają dostępu do treści widocznej na obrazach.
Ważne dla znaczenia treści grafiki powinno się wstawiać na stronę nie za pomocą własności background-image, tylko za pomocą elementu HTML img.
Ponadto wraz z obrazem lub obrazami tła zawsze należy zdefiniować także kolor tła, aby zapewnić wystarczający kontrast dla treści na wypadek, gdyby obrazy z jakiegoś powodu nie zostały wczytane przez przeglądarkę.
Przykład
Poniżej znajduje się prosty przykład użycia własności background-image do wstawienia obrazu w tle elementu article:
article {
background-image: url("obraz.png");
}Ta reguła wstawia obraz o nazwie obraz.png w tle wszystkich elementów article na stronie.
Wartości i składnia
Własność background-image przyjmuje dwa typy wartości:
- Obraz graficzny zdefiniowany w dowolny sposób obsługiwany w CSS – w tle elementu można ustawić zarówno dowolny obraz rastrowy, np. PNG, JPG, czy WebP, jak również gradient albo obraz w formacie wektorowym, np. SVG.
- Słowo kluczowe
none– brak obrazu.
Wartością własności background-image może być lista wartości rozdzielanych przecinkami. Każda z wartości na tej liście definiuje osobną warstwę. Dotyczy to nawet słowa kluczowego none, które nie dodaje żadnego obrazu, ale tworzy kolejną warstwę na stosie.
Pozostałe własności tła, takie jak background-repeat, background-size czy background-position, określają inne właściwości obrazów wstawionych przez własność background-image i powinny mieć tyle samo wartości, co własność background-image. Jeśli mają ich za mało, to są one uzupełniane przez przeglądarkę przez cykliczne wykorzystanie dostępnych wartości, np.:
background-image: url("a.png"), url("b.png"), url("c.png"), url("d.png"), url("e.png");
background-position: top, right, bottom;W tym przypadku własność background-position obrazowi a.png przypisze wartość top, obrazowi b.png – right, a obrazowi c.png – bottom. Na tym kończy się zasób wartości tej własności, więc dla kolejnych pozycji we własności background-image wartości z własności background-position będą pobierane od początku. W efekcie obrazowi d.png zostanie przypisana wartość top, a obrazowi e.png – wartość right. To samo dotyczy pozostałych własności dotyczących obrazu tła.
Jeśli wartości jest za dużo, to nadmiarowe pozycje zostają zignorowane.
Dodatkowe przykłady
Poniżej znajduje się parę dodatkowych przykładów użycia własności CSS background-image.
Gradient w tle elementu
Za pomocą własności background-image w tle elementu można ustawić dowolny typ gradientu obsługiwany przez CSS. W poniższym przykładzie w tle elementu section został ustawiony gradient stożkowy:
background-image: conic-gradient(red, green, blue);Efekt:
Obraz SVG w tle elementu
Poniżej znajduje się przykład pokazujący, jak za pomocą własności background-image wstawić grafikę SVG w tle elementu:
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='310' width='400'%3E %3Ccircle cx='70' cy='70' r='65' stroke='red' fill='lightpink' stroke-width='5'/%3E%3C/svg%3E");Efekt:
Kilka obrazów w tle elementu
Aby wstawić kilka obrazów w tle elementu, należy zdefiniować listę ich definicji rozdzielanych przecinkami, np.:
background-image:
url("filizanka.png"),
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='310' width='400'%3E %3Ccircle cx='190' cy='70' r='65' stroke='red' fill='lightpink' stroke-width='5'/%3E%3C/svg%3E"),
linear-gradient(red, green, blue)
;Efekt:
Jak widać, typy grafik można swobodnie mieszać i każdy z tych obrazów można kontrolować za pomocą pozostałych własności z grupy teł CSS.
Zastosowanie
Własność CSS background-image ma zastosowanie do wszystkich elementów HTML.
Podsumowanie
| Zastosowanie | Wszystkie elementy HTML |
|---|---|
| Obsługiwane wartości |
|
| Wartość początkowa | none |
| Dziedziczenie | Nie |
| Specyfikacja | CSS Backgrounds and Borders Module Level 3, własność background-image |
