Menu

Obraz tła w CSS: rozmiar, pozycja, powtarzanie i cover

background-image umieszcza obraz albo gradient za treścią elementu. Poznaj url() i gradienty, background-size (cover i contain), background-position, background-repeat, nakładanie kilku teł i skrót background.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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 div z obrazem tła ma 0px wysokości. Daj mu treść, padding, height albo aspect-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
coverSkaluje, aż pudełko jest całkowicie wypełnione; nadmiar zostaje przycięty
containSkaluje, aż cały obraz się zmieści; po dwóch stronach zostają szare pasy
200pxSzerokość 200px, wysokość proporcjonalna
50% autoPoł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: fixedObraz stoi w miejscu podczas przewijania strony (ignorowane w Safari na iOS)
background-originCzy pozycja liczy się od krawędzi obramowania, paddingu czy treści
background-clipGdzie maluje się tło, w tym text, które wypełnia litery
background-blend-modeMiesza 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-repeat przy contain albo małym obrazie: obraz się powtarza.
  • Rozciąganie przez 100% 100%, gdy chodziło o cover.
  • 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 pisz url("...").

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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ