9.4. Pozycja tła (background-position
)
Wprowadzenie: Gdzie umieścić tło?
Gdy używamy obrazu tła (background-image
), zwłaszcza jeśli nie jest on powtarzany (background-repeat: no-repeat;
) lub jest większy niż element, często chcemy kontrolować jego dokładne położenie wewnątrz elementu.
Właściwość background-position
pozwala określić **punkt początkowy** (origin point) dla obrazu tła względem obszaru pozycjonowania tła (domyślnie jest to lewy górny róg obszaru padding-box, ale można to zmienić za pomocą background-origin
).
Domyślną wartością dla background-position
jest 0% 0%
lub left top
, co oznacza, że lewy górny róg obrazu tła pokrywa się z lewym górnym rogiem obszaru pozycjonowania tła.
Wartości background-position
Właściwość background-position
może przyjmować jedną lub dwie wartości, które określają pozycję w poziomie (oś X) i pionie (oś Y).
Słowa kluczowe (Keywords)
Można używać słów kluczowych do określenia pozycji:
- Oś X:
left
,center
,right
- Oś Y:
top
,center
,bottom
Można podać:
- Jedno słowo kluczowe: Jeśli podasz tylko jedno słowo (np.
center
), druga wartość domyślnie przyjmiecenter
. Czylibackground-position: center;
jest równoważnecenter center
. Jeśli podasztop
,bottom
,left
lubright
, druga wartość domyślnie będziecenter
(np.background-position: top;
tocenter top
). - Dwa słowa kluczowe: Można podać dwa słowa, jedno dla osi X, drugie dla osi Y, w dowolnej kolejności (przeglądarka sama rozpozna, które jest które). Np.
right top
,bottom left
,center bottom
.
.bg-center {
background-position: center; /* center center */
}
.bg-top-right {
background-position: top right; /* lub right top */
}
.bg-bottom-left {
background-position: bottom left; /* lub left bottom */
}
.bg-left-center {
background-position: left; /* left center */
}
.bg-center-bottom {
background-position: bottom; /* center bottom */
}
Wartości procentowe (%)
Można podać jedną lub dwie wartości procentowe. Pierwsza odnosi się do osi X, druga do osi Y.
background-position: 50% 50%;
jest równoważnecenter center
.background-position: 0% 0%;
jest równoważneleft top
.background-position: 100% 100%;
jest równoważneright bottom
.background-position: 25% 75%;
umieści punkt obrazu znajdujący się w 25% jego szerokości i 75% jego wysokości w punkcie kontenera znajdującym się w 25% jego szerokości i 75% jego wysokości.
Kluczowe jest zrozumienie, że wartość procentowa X% Y%
oznacza: "wyrównaj punkt obrazu znajdujący się w X%
jego szerokości i Y%
jego wysokości z punktem obszaru pozycjonowania tła znajdującym się w X%
jego szerokości i Y%
jego wysokości".
.bg-percent-center {
background-position: 50% 50%; /* Wycentrowanie */
}
.bg-percent-top-right {
background-position: 100% 0%; /* Prawy górny róg */
}
.bg-percent-custom {
background-position: 10% 90%; /* Lekko od lewej, blisko dołu */
}
Wartości długości (px, em, etc.)
Można podać jedną lub dwie wartości długości. Określają one **odległość lewego górnego rogu obrazu tła od lewego górnego rogu obszaru pozycjonowania tła**.
background-position: 10px 20px;
przesuwa lewy górny róg obrazu o 10px w prawo i 20px w dół od lewego górnego rogu kontenera.background-position: 0px 0px;
to domyślne położenie (lewy górny róg).- Można używać wartości ujemnych, aby przesunąć obraz częściowo poza kontener.
Jeśli podasz tylko jedną wartość długości, druga domyślnie przyjmie 50%
(center
).
.bg-pixels-offset {
background-position: 30px 15px; /* Przesunięcie o 30px w prawo, 15px w dół */
}
.bg-pixels-right-bottom-offset {
/* Można też połączyć z krawędziami, np. 10px od prawej, 5px od dołu */
background-position: right 10px bottom 5px;
}
Mieszanie wartości
Można mieszać słowa kluczowe z wartościami procentowymi lub długościami (np. center 20px
, left 50%
, right 10px top 5px
).
Pozycjonowanie względem krawędzi ( składnia 4 wartości)
Nowsza składnia pozwala precyzyjnie określić odległość od konkretnej krawędzi za pomocą 3 lub 4 wartości:
background-position: right 20px bottom 10px;
umieszcza obraz 20px od prawej krawędzi i 10px od dolnej krawędzi.background-position: left 5px top 15px;
umieszcza obraz 5px od lewej i 15px od górnej krawędzi.
Ta składnia jest bardziej intuicyjna przy pozycjonowaniu względem innych krawędzi niż lewa górna.
Pozycjonowanie wielu obrazów tła
Jeśli używasz wielu obrazów tła, możesz podać wiele wartości dla background-position
, oddzielonych przecinkami. Każda wartość odpowiada obrazowi na tej samej pozycji w background-image
.
.multi-bg-positioned {
background-image: url("icon1.png"), url("icon2.png");
background-repeat: no-repeat; /* Ważne, aby pozycjonować pojedyncze obrazy */
background-position: left top, right bottom; /* icon1 w lewym górnym, icon2 w prawym dolnym */
/* Można też użyć bardziej złożonych wartości: */
/* background-position: 10px 10px, center 90%; */
border: 1px solid orange;
height: 150px;
}
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Ustaw obrazek jako tło elementu div
bez powtarzania (no-repeat
). Wycentruj go zarówno w poziomie, jak i w pionie za pomocą słów kluczowych.
Rozwiązanie:
Zakładamy obrazek `logo.png`.
HTML:
<div class="centered-bg-box"></div>
CSS:
.centered-bg-box {
width: 300px;
height: 200px;
border: 1px solid purple;
background-image: url("logo.png");
background-repeat: no-repeat;
background-position: center center; /* lub po prostu: center */
background-color: #fdf;
}
Efekt: Logo pojawi się wycentrowane wewnątrz fioletowego pudełka.
Zadanie 2 (do samodzielnego wykonania)
Ustaw obrazek jako tło bez powtarzania. Użyj wartości procentowych, aby umieścić go w prawym dolnym rogu (100% 100%
).
Zadanie 3 (do samodzielnego wykonania)
Ustaw obrazek jako tło bez powtarzania. Użyj składni 4 wartości, aby umieścić go 20px od prawej krawędzi i 10px od dolnej krawędzi.
FAQ - Najczęściej zadawane pytania
Co określa obszar pozycjonowania tła?
Domyślnie jest to obszar obejmujący zawartość (content) i wypełnienie (padding) elementu, czyli tzw. padding-box. Można to zmienić za pomocą właściwości background-origin
na border-box
(obejmuje obramowanie) lub content-box
(tylko zawartość).
Jak wycentrować tło, które jest większe niż element?
background-position: center center;
(lub 50% 50%
) wycentruje również obraz tła, który jest większy niż element. W takim przypadku środek obrazu zostanie wyrównany ze środkiem elementu, a krawędzie obrazu zostaną obcięte.
Czy mogę animować background-position
?
Tak, właściwość background-position
jest animowalna. Można tworzyć efekty płynnego przesuwania tła za pomocą przejść (transition
) lub animacji (@keyframes
), np. przy najechaniu myszką (:hover
).
Jak działa background-position
z background-attachment: fixed;
?
Gdy tło jest przypięte do viewportu (background-attachment: fixed;
), background-position
określa pozycję obrazu względem krawędzi viewportu, a nie elementu.