Margin i Padding to dwa kluczowe pojęcia w CSS, które mają ogromny wpływ na rozmieszczenie elementów na stronie. Choć często bywają mylone, ich funkcje są różne.
Zobaczmy to krok po kroku:
| Właściwość | Co robi | Gdzie działa |
|---|---|---|
| margin | Tworzy odstęp na zewnątrz elementu, między nim, a innymi elementami. | Na zewnątrz ramki (border). |
| padding | Tworzy odstęp wewnątrz elementu, między jego zawartością (np. tekstem), a ramką. | Wewnątrz ramki (border). |
Model pudełkowy (Box Model)
Każdy element HTML można sobie wyobrazić jak pudełko składające się z czterech warstw:

<div class="pudelko">Tekst wewnątrz pudełka</div>
padding: 20px – tekst nie dotyka ramki.
margin: 30px – całe pudełko odsuwa się od innych elementów o 30px.
Możesz ustawiać marginesy i padding osobno dla każdej strony:
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
lub skróconym zapisem (zgodnie z ruchem wskazówek zegara od góry):
margin: 10px 20px 30px 40px;
Analogicznie dla paddingu:
padding: 5px 10px 15px 20px;Domyślnie (przy box-sizing: content-box):
width i height odnoszą się tylko do content,
czyli padding i border powiększają całkowity rozmiar elementu.
Przykład:
div {
width: 200px;
padding: 20px;
border: 10px solid;
} Całkowita szerokość = 200 + 20 + 20 + 10 + 10 = 260px
Marginesy pionowe (top/bottom) między elementami mogą się nakładać (collapse) – np. dwa paragrafy z margin-top: 20px i margin-bottom: 30px nie dadzą 50px odstępu, tylko 30px (większy z nich).
Padding wewnątrz elementu wpływa na tło — tło koloru lub obraz rozciąga się aż do krawędzi paddingu.
Margin nie ma wpływu na tło — tworzy „przezroczysty” odstęp.
Cel: Zrozumienie, jak działa padding wewnątrz elementu.
Polecenie:
Utwórz prosty element <div> z tekstem w środku.
Nadaj mu:
kolor tła (np. jasnoniebieski),
ramkę (border: 2px solid navy;),
padding 20px.
Zobacz, jak zmienia się położenie tekstu wewnątrz ramki.
Cel: Zrozumienie odstępu między dwoma elementami.
Polecenie:
Stwórz dwa <div>y, jeden pod drugim, każdy z:
kolorem tła (np. zielony i pomarańczowy),
wysokością 100px,
margin-bottom: 20px dla pierwszego.
Sprawdź, jak margin oddziela elementy.
Zmień margin-bottom na margin-top drugiego elementu i zobacz, że efekt wizualny jest taki sam (bo marginesy pionowe się nakładają).
Cel: Rozróżnienie, gdzie działa margin, a gdzie padding.
Polecenie:
Utwórz <div> z napisem „Zadanie 3”.
Dodaj mu:
background-color: lightcoral;
border: 2px solid brown;
padding: 15px;margin: 40px;
Pod spodem umieść <p> z dowolnym tekstem i zobacz, jak odstęp między nimi pochodzi od marginu, a nie paddingu.
Cel: Użycie padding i margin do estetycznego rozmieszczenia obrazka i podpisu.
Polecenie:
Utwórz HTML:
<div class="foto">
<img src="https://picsum.photos/200" alt="Losowy obraz" /> <p>Losowe zdjęcie z serwisu Picsum</p>
</div>
Dodaj CSS:
.foto {
border: 2px solid #333;
background-color: #eee;
padding: 10px;
margin: 30px auto;
width: 220px;
text-align: center;
}
.foto img {
border-radius: 8px;
margin-bottom: 10px;
}
Obserwuj:
padding wewnątrz ramki wokół zdjęcia,
margin-bottom między zdjęciem a podpisem,
margin: auto centrowanie całego bloku.
Cel: Wykorzystanie margin i padding do stworzenia równych odstępów między elementami.
Polecenie:
Zbuduj prosty układ trzech kolumn:
<div class="kolumna">Kolumna 1</div>
<div class="kolumna">Kolumna 2</div>
<div class="kolumna">Kolumna 3</div>
CSS:
.kolumna {
display: inline-block;
width: 150px;
background-color: lightgreen;
border: 2px solid darkgreen;
padding: 15px;
margin: 10px;
text-align: center;
}
Spróbuj:
zmienić margin na różne wartości — zobacz, jak zmieniają się odległości między kolumnami;
usunąć padding i zauważ, jak tekst „przykleja się” do ramki.