Kurs HTML

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.
  • 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.
  • 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.