Jak dodać obraz tła
background-image maluje obraz za treścią, paddingiem i obramowaniem elementu. Domyślnie zaczyna w lewym górnym rogu obszaru paddingu, zachowuje naturalny rozmiar i powtarza się, żeby wypełnić pudełko:
W prawdziwym projekcie url() wskazuje plik: url("images/hero.jpg"). Ścieżka jest względna wobec arkusza stylów, w którym się znajduje (albo wobec strony w przypadku elementu <style>). Przykłady na tej stronie używają małych obrazów SVG zapisanych bezpośrednio jako adresy data:, więc działają wszędzie.
Dwie rzeczy warto wiedzieć od początku:
- Tło nie nadaje elementowi rozmiaru. Pusty
divz obrazem tła ma 0px wysokości. Daj mu treść, padding,heightalboaspect-ratio. - Obraz tła to dekoracja. Czytniki ekranu go pomijają i nie ma on tekstu alternatywnego. Obraz, który niesie znaczenie, powinien być elementem
<img>.
background-size: cover, contain i długości
background-size skaluje obraz. Oba słowa kluczowe zachowują jego proporcje:
Obraz jest dwa razy szerszy niż wyższy, a każde pudełko jest kwadratem.
| Wartość | Wynik |
|---|---|
auto (domyślnie) | Własny rozmiar obrazu |
cover | Skaluje, aż pudełko jest całkowicie wypełnione; nadmiar zostaje przycięty |
contain | Skaluje, aż cały obraz się zmieści; po dwóch stronach zostają szare pasy |
200px | Szerokość 200px, wysokość proporcjonalna |
50% auto | Połowa szerokości pudełka, wysokość proporcjonalna |
100% 100% | Dokładnie rozmiar pudełka; zniekształca obraz, gdy proporcje się różnią |
cover to typowy wybór dla dużych banerów i kart. contain sprawdza się przy logo i ilustracjach, których nie wolno przyciąć.
background-position i background-repeat
background-position umieszcza obraz w pudełku za pomocą słów kluczowych (top, center, bottom, left, right), procentów albo długości. background-repeat steruje powtarzaniem. Wypróbuj kilka wartości:
Wypróbuj pozycje top right, bottom 10px right 20px i 25% 75% oraz wartości powtarzania repeat-x, repeat-y, space (kafelki z odstępami, żaden nie jest przycięty) i round (kafelki przeskalowane tak, żeby zmieściła się ich pełna liczba).
Warstwy: kilka teł i tekst na obrazie
background-image przyjmuje listę rozdzieloną przecinkami. Pierwsza warstwa jest rysowana na wierzchu. Typowe zastosowanie to półprzezroczysty gradient na zdjęciu, dzięki któremu biały tekst pozostaje czytelny:
aspect-ratio nadaje pustemu pudełku wysokość, a background-size: cover działa na obie warstwy. Więcej przepisów na gradienty znajdziesz na stronie gradienty CSS.
Skrót background
background ustawia wszystkie właściwości tła w jednej linii. Rozmiar musi stać zaraz po pozycji, oddzielony ukośnikiem, a kolor trafia do ostatniej warstwy:
.hero {
background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
background-image: url("hero.jpg");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
background-color: #1f2937;
}
Kolor zastępczy widać, zanim obraz się załaduje, i gdy ładowanie się nie uda. Każda właściwość pominięta w skrócie wraca do wartości domyślnej, więc najpierw wpisz skrót, a po nim pojedyncze właściwości.
Inne właściwości tła
| Właściwość | Co robi |
|---|---|
background-attachment: fixed | Obraz stoi w miejscu podczas przewijania strony (ignorowane w Safari na iOS) |
background-origin | Czy pozycja liczy się od krawędzi obramowania, paddingu czy treści |
background-clip | Gdzie maluje się tło, w tym text, które wypełnia litery |
background-blend-mode | Miesza warstwy ze sobą, na przykład multiply |
Częste błędy
- Zła ścieżka.
url()w arkuszu stylów jest względny wobec pliku CSS, a nie strony HTML. - Pusty element. Nie ma wysokości, więc obraz nie ma gdzie się pokazać.
- Brak
no-repeatprzycontainalbo małym obrazie: obraz się powtarza. - Rozciąganie przez
100% 100%, gdy chodziło ocover. - Ważne obrazy jako tło. Do treści używaj
<img>z tekstem alternatywnym; tła są niewidoczne dla czytników ekranu. - Brak cudzysłowów wokół adresu
data:, który zawiera spacje albo cudzysłowy. Zawsze piszurl("...").
Najczęściej zadawane pytania
Jak dodać obraz tła w CSS?
Użyj na elemencie background-image: url("photo.jpg");. Ścieżka jest względna wobec pliku CSS (albo wobec strony w przypadku atrybutu style lub elementu <style>). Nadaj elementowi rozmiar, bo tło nigdy nie powiększa pustego elementu.
Jak sprawić, żeby obraz tła pokrywał cały element?
Użyj background-size: cover; razem z background-position: center;. Obraz skaluje się tak, żeby w całości wypełnić pudełko z zachowaniem proporcji, a nadmiar zostaje przycięty.
Czym różni się cover od contain?
cover wypełnia całe pudełko i przycina to, co się nie mieści. contain pokazuje cały obraz i zostawia puste miejsce po dwóch stronach, gdy proporcje się różnią.
Jak wyłączyć powtarzanie obrazu tła?
Dodaj background-repeat: no-repeat;. Domyślnie obraz tła powtarza się w obu kierunkach, żeby wypełnić element.
Dlaczego mój obraz tła się nie wyświetla?
Najczęstsze przyczyny to zła ścieżka w url() (jest względna wobec pliku CSS), element bez wysokości, bo nie ma treści, albo późniejszy skrót background, który zresetował obraz.