6.3. Wypełnienie (padding
)
Wprowadzenie: Wewnętrzny odstęp wokół treści
Właściwość padding
w CSS służy do tworzenia **wewnętrznego odstępu** między obszarem treści (content area) elementu a jego obramowaniem (border). Jest to przezroczysty obszar, który "odsuwa" treść od krawędzi pudełka elementu.
Padding jest kluczowy dla poprawy czytelności i estetyki, zapobiegając "przyklejaniu się" tekstu lub innych treści do obramowania lub krawędzi kontenera.
Padding przyjmuje kolor tła (background-color
) elementu.
Indywidualne właściwości padding-*
Można ustawić padding dla każdej strony elementu niezależnie, używając następujących właściwości:
padding-top
: Wypełnienie górne.padding-right
: Wypełnienie prawe.padding-bottom
: Wypełnienie dolne.padding-left
: Wypełnienie lewe.
Wartościami tych właściwości mogą być:
<długość>
: Stała wartość w jednostkach długości (np.px
,em
,rem
). Wartości nie mogą być ujemne.<procent>
: Wartość procentowa obliczana względem **szerokości (width)** kontenera nadrzędnego (containing block). Co ważne, dotyczy to **wszystkich czterech** właściwości paddingu (padding-top
,padding-bottom
również!).
.box {
background-color: lightyellow;
border: 1px solid orange;
padding-top: 10px;
padding-right: 20px;
padding-bottom: 15px;
padding-left: 5%; /* 5% szerokości rodzica */
}
Właściwość zbiorcza padding
Znacznie częściej używa się właściwości zbiorczej (shorthand) padding
, która pozwala ustawić wypełnienie dla wszystkich czterech stron jednocześnie. Składnia zależy od liczby podanych wartości:
- Jedna wartość:
padding: 20px;
- Stosuje tę samą wartość do wszystkich czterech stron (góra, prawo, dół, lewo).
- Dwie wartości:
padding: 10px 20px;
- Pierwsza wartość (
10px
) stosowana jest do góry i dołu. - Druga wartość (
20px
) stosowana jest do prawej i lewej strony.
- Pierwsza wartość (
- Trzy wartości:
padding: 10px 20px 15px;
- Pierwsza wartość (
10px
) stosowana jest do góry. - Druga wartość (
20px
) stosowana jest do prawej i lewej strony. - Trzecia wartość (
15px
) stosowana jest do dołu.
- Pierwsza wartość (
- Cztery wartości:
padding: 10px 20px 15px 5px;
- Wartości stosowane są kolejno do: góry, prawej, dołu, lewej strony (zgodnie z ruchem wskazówek zegara).
.przyklad-1 { padding: 15px; } /* 15px na wszystkie strony */
.przyklad-2 { padding: 10px 30px; } /* 10px góra/dół, 30px prawo/lewo */
.przyklad-3 { padding: 5px 10px 15px; } /* 5px góra, 10px prawo/lewo, 15px dół */
.przyklad-4 { padding: 5px 10px 15px 20px; } /* 5px góra, 10px prawo, 15px dół, 20px lewo */
Zapamiętanie kolejności przy czterech wartościach (góra, prawo, dół, lewo) jest kluczowe.
Padding a rozmiar elementu (box-sizing: content-box
)
Jak wspomniano wcześniej, przy domyślnym box-sizing: content-box;
, padding jest **dodawany** do wymiarów określonych przez width
i height
, aby obliczyć całkowity rozmiar elementu zajmowany na stronie.
Całkowita Szerokość = width
+ padding-left
+ padding-right
(+ border)
Całkowita Wysokość = height
+ padding-top
+ padding-bottom
(+ border)
Oznacza to, że dodanie paddingu do elementu o stałej szerokości width
faktycznie **zwiększy** jego wizualną szerokość na ekranie.
.stala-szerokosc {
width: 200px;
background-color: lightgreen;
border: 1px solid green;
}
.stala-szerokosc-z-paddingiem {
width: 200px;
padding: 20px; /* Dodaje 20px z lewej i 20px z prawej */
background-color: lightcoral;
border: 1px solid red;
}
/* .stala-szerokosc zajmie 200px + 2px (border) = 202px szerokości */
/* .stala-szerokosc-z-paddingiem zajmie 200px + 20px + 20px + 2px = 242px szerokości! */
To zachowanie może być czasem nieintuicyjne. Problem ten rozwiązuje box-sizing: border-box;
, który zostanie omówiony w dalszej części.
Zadania praktyczne
Zadanie 1 (z rozwiązaniem)
Stwórz przycisk (np. element <button>
lub <a>
ze stylami). Nadaj mu tło i obramowanie. Użyj właściwości zbiorczej padding
, aby nadać mu 10px
wypełnienia pionowego (góra/dół) i 25px
wypełnienia poziomego (prawo/lewo).
Rozwiązanie:
HTML:
<button class="my-button">Kliknij</button>
CSS:
.my-button {
background-color: #eee;
border: 1px solid #ccc;
padding: 10px 25px; /* 10px góra/dół, 25px prawo/lewo */
cursor: pointer;
}
Efekt: Przycisk będzie miał wewnętrzne odstępy, co sprawi, że tekst nie będzie "przyklejony" do krawędzi.
Zadanie 2 (do samodzielnego wykonania)
Stwórz element div
z klasą .card
. Nadaj mu szerokość 300px
i obramowanie. Użyj indywidualnych właściwości padding-*
, aby nadać mu: 15px paddingu górnego, 20px prawego, 25px dolnego i 30px lewego.
Zadanie 3 (do samodzielnego wykonania)
Masz element div
o szerokości 400px
. Ustaw mu padding-left: 10%;
. Jaka będzie obliczona wartość lewego paddingu w pikselach? Sprawdź w narzędziach deweloperskich.
FAQ - Najczęściej zadawane pytania
Czy padding wpływa na elementy inline?
Tak, padding można stosować do elementów inline (np. <span>
). Padding poziomy (padding-left
, padding-right
) będzie działał zgodnie z oczekiwaniami, odsuwając treść od sąsiednich elementów w linii. Padding pionowy (padding-top
, padding-bottom
) również zostanie dodany, ale **nie wpłynie** na wysokość linii (line-height
) i może wizualnie nachodzić na linie powyżej lub poniżej.
Czy procentowy padding zawsze odnosi się do szerokości rodzica?
Tak, co może być mylące. Zarówno padding-left
/padding-right
, jak i padding-top
/padding-bottom
wyrażone w procentach odnoszą się do **szerokości** bloku zawierającego (containing block). Jest to zachowanie zdefiniowane w specyfikacji CSS.
Jaka jest różnica między paddingiem a marginesem?
Padding to odstęp *wewnętrzny* (między treścią a obramowaniem), który przyjmuje tło elementu. Margines to odstęp *zewnętrzny* (między obramowaniem a innymi elementami), który jest zawsze przezroczysty. Padding zwiększa całkowity rozmiar elementu (przy content-box
), margines tworzy przestrzeń wokół niego.
Czy mogę użyć auto
dla paddingu?
Nie, wartość auto
nie jest dozwolona dla właściwości padding
.