PorównaniePorównania

margin vs padding

margin to przezroczysty odstęp na zewnątrz elementu. padding to odstęp wewnątrz obramowania, między treścią a krawędzią, i przyjmuje tło elementu.

Na tej stronie

Porównanie w tabeli

#
  • Gdzie leży względem obramowania

    margin
    Na zewnątrz
    padding
    Wewnątrz, wokół treści
  • Pokazuje tło elementu

    margin
    Nie, zawsze przezroczysty
    padding
    Tak, przejmuje tło i kolor elementu
  • Wartości ujemne

    margin
    Dozwolone, przysuwają lub nakładają elementy
    padding
    Niedozwolone
  • Łączenie się z sąsiadem (collapsing)

    margin
    Pionowe marginesy sąsiednich bloków czasem się zlewają
    padding
    Nigdy się nie łączy
  • Wyśrodkowanie bloku

    margin
    margin: 0 auto wyśrodkowuje blok o znanej szerokości
    padding
    Nie służy do wyśrodkowywania
  • Typowe użycie

    margin
    Odstęp między kartami, akapitami, elementami listy
    padding
    Odstęp wewnątrz przycisków, pól, kart

Przykład

#
CSS
.card {
  margin-bottom: 16px;
  padding: 16px;
  border: 1px solid #3f3f46;
  border-radius: 10px;
}
Podgląd

Definicja i zastosowanie

#

Obie właściwości dodają wolne miejsce, ale w innym miejscu modelu pudełkowego. margin leży poza obramowaniem elementu i oddziela go od sąsiadów, dlatego jest zawsze przezroczysty, widać przez niego to, co jest pod spodem. padding leży wewnątrz obramowania, między treścią a krawędzią, więc dziedziczy tło i kolor elementu: przycisk z paddingiem "oddycha", bo tło rozciąga się razem z nim.

Różnica widać też w zachowaniu. margin może być ujemny, co przysuwa albo nakłada elementy na siebie, a pionowe marginesy dwóch sąsiadujących bloków czasem się zlewają w jeden, większy odstęp (collapsing). padding nigdy nie bywa ujemny i nigdy się nie zlewa z niczym.

W praktyce wybór jest prosty: odstęp między kartami, akapitami czy elementami listy to margin albo, jeszcze lepiej w kontenerach flex i grid, właściwość gap. Odstęp między treścią przycisku, pola czy karty a ich krawędzią to padding.

Składnia

#
Składnia
margin: <góra> <prawa>? <dół>? <lewa>?;
padding: <góra> <prawa>? <dół>? <lewa>?;

Więcej przykładów

#
Margin ujemny nakłada elementy
CSS
.avatar {
  margin-left: -12px;
  border: 2px solid #0c0c10;
}

.avatar:first-child {
  margin-left: 0;
}
Podgląd

Ujemny margines nakłada awatary na siebie, jak w popularnym wzorze "kto jest online".

Zbyt mały padding utrudnia klikanie
CSS
.button-tight {
  padding: 2px 4px;
}

.button-comfy {
  padding: 10px 18px;
}
Podgląd

Obszar klikalny na telefonie powinien mieć co najmniej około 44px, o czym decyduje właśnie padding.

Dobre praktyki

#
  • Odstępy między elementami listy, kart czy pól formularza ustawiaj przez gap kontenera, zamiast marginesów na każdym elemencie.
  • Jeśli element "znika" pod sąsiadem albo robi się za duży, sprawdź najpierw padding: przy box-sizing: content-box powiększa element ponad width.
  • Margines pomiędzy sekcjami bywa nieprzewidywalny przez collapsing. W razie wątpliwości sprawdź wynik w narzędziach deweloperskich.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.