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-bottomró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.