Różnica na jednym obrazku
Padding jest wewnątrz obramowania. Margin jest na zewnątrz. Oba pudełka poniżej mają tę samą treść i tę samą wartość 24px; różni się tylko właściwość. Szary to kontener za nimi.
Przy padding 24px jest niebieskie: należy do pudełka, jest wewnątrz obramowania, a pudełko rośnie. Przy margin 24px jest szare: pudełko ściśle otacza swój tekst, a przestrzeń na zewnątrz odpycha krawędzie kontenera.
Wypróbuj oba na jednym pudełku
Przesuń dwa suwaki. Padding powiększa niebieskie pudełko; margin odsuwa pudełko od szarych krawędzi, nie zmieniając go.
Obserwuj linijkę z rozmiarem: zmienia się, gdy przesuwasz suwak padding, i pozostaje taka sama, gdy przesuwasz suwak margin.
Margin a padding w skrócie
| Padding | Margin | |
|---|---|---|
| Gdzie | Wewnątrz obramowania | Na zewnątrz obramowania |
| Tło | Pokazuje tło elementu | Zawsze przezroczysty |
| Część obszaru kliknięcia | Tak | Nie |
| Zwiększa rozmiar elementu | Tak, przy content-box | Nie |
Może być auto | Nie | Tak (margin: 0 auto wyśrodkowuje) |
| Może być ujemny | Nie | Tak |
| Wartości pionowe się zapadają | Nigdy | Tak, sąsiednie pionowe marginesy się zapadają |
| Procenty względem | Szerokości bloku zawierającego | Szerokości bloku zawierającego |
| Typowe użycie | Przestrzeń w przyciskach, kartach, polach | Przestrzeń między elementami, wyśrodkowanie |
Każda właściwość ma własną stronę ze wszystkimi szczegółami: CSS padding i CSS margin.
Którego użyć
Zadaj jedno pytanie: czy ta przestrzeń należy do elementu, czy leży między elementami?
- Miejsce wokół etykiety przycisku, wnętrze karty, odstęp między tekstem pola a jego obramowaniem: padding. Przejmuje tło i powiększa cel.
- Odstęp między dwoma akapitami, między kartami, wokół sekcji: margin, albo
gap, gdy rodzic jest kontenerem flex lub grid.
Wybór ma największe znaczenie przy obszarze kliknięcia. Dwa linki poniżej zajmują na stronie tyle samo miejsca, ale w pierwszym ta przestrzeń to padding, a w drugim margin. Tylko w pierwszy łatwo trafić:
Przerywany bursztynowy kontur to krawędź elementu, czyli obszar, który reaguje na kliknięcia i dotknięcia. Margin wokół drugiego linku to pusta przestrzeń, która nic nie robi.
Odstępy między elementami: margin czy gap
W wierszu lub siatce elementów gap na rodzicu flex lub grid jest zwykle czystszy niż marginesy na każdym dziecku: działa tylko między elementami, nigdy przed pierwszym ani po ostatnim, więc nie trzeba niczego cofać.
Tutaj szary kontener używa padding (przestrzeń w jego wnętrzu, szara), elementy używają padding (przestrzeń w każdym z nich, zielona), a gap zajmuje się odstępami między nimi.
Częste błędy
- Używanie margin dla przestrzeni, która ma być kolorowa. Margin jest przezroczysty. Jeśli przestrzeń ma pokazywać tło, to jest padding.
- Używanie margin, żeby powiększyć link. Obszar kliknięcia kończy się na obramowaniu; użyj padding.
- Oczekiwanie, że dwa pionowe marginesy po 20px dadzą 40px. Sąsiednie pionowe marginesy zapadają się do 20px. Padding nigdy się nie zapada.
- Próba wyśrodkowania przez
padding: auto. Tylko margin przyjmujeauto. - Zapominanie, że padding powiększa pudełko. Dodaj
box-sizing: border-box, żebywidthgo obejmowało.
Najczęściej zadawane pytania
Czym różni się margin od padding?
Padding to przestrzeń między treścią elementu a jego obramowaniem, wewnątrz elementu. Margin to przestrzeń na zewnątrz obramowania, między elementem a jego sąsiadami. Padding pokazuje tło elementu; margin jest zawsze przezroczysty.
Kiedy używać padding zamiast margin?
Używaj padding dla przestrzeni, która należy do elementu: miejsca wokół tekstu przycisku, wnętrza karty, wszystkiego, co ma mieć to samo tło albo być klikalne. Używaj margin (albo gap we flex i grid) dla przestrzeni między osobnymi elementami.
Czy padding albo margin zwiększa rozmiar elementu?
Padding tak, przy domyślnym box-sizing: content-box: dodaje się go do szerokości i wysokości. Margin nigdy nie jest dodawany do rozmiaru elementu; dodaje przestrzeń wokół niego (blok z width: auto staje się nawet węższy, bo jego marginesy zabierają część dostępnej szerokości). Przy box-sizing: border-box padding jest zabierany z wnętrza szerokości.
Czy padding może być ujemny jak margin?
Nie. Ujemny padding jest nieprawidłowy i ignorowany, a ujemne marginesy są dozwolone i mogą sprawić, że elementy na siebie nachodzą. Padding nie może też mieć wartości auto, dlatego do wyśrodkowania używa się margin: 0 auto.