Menu

Margin a padding w CSS: różnica na jednym przykładzie

Padding to przestrzeń wewnątrz obramowania elementu, a margin to przestrzeń na zewnątrz. Zobacz oba na tym samym pudełku, obok siebie i na żywo, a potem dowiedz się, którego użyć dla tła, obszaru kliknięcia, odstępów między elementami i wyśrodkowania.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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

PaddingMargin
GdzieWewnątrz obramowaniaNa zewnątrz obramowania
TłoPokazuje tło elementuZawsze przezroczysty
Część obszaru kliknięciaTakNie
Zwiększa rozmiar elementuTak, przy content-boxNie
Może być autoNieTak (margin: 0 auto wyśrodkowuje)
Może być ujemnyNieTak
Wartości pionowe się zapadająNigdyTak, sąsiednie pionowe marginesy się zapadają
Procenty względemSzerokości bloku zawierającegoSzerokości bloku zawierającego
Typowe użyciePrzestrzeń w przyciskach, kartach, polachPrzestrzeń 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 przyjmuje auto.
  • Zapominanie, że padding powiększa pudełko. Dodaj box-sizing: border-box, żeby width go 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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ