Tek resimde fark
Padding kenarlığın içindedir. Margin dışındadır. Aşağıdaki iki kutu da aynı içeriğe ve aynı 24px değerine sahip; yalnızca özellik farklı. Gri, arkalarındaki kapsayıcıdır.
Padding ile 24px mavidir: kutunun parçasıdır, kenarlığın içindedir ve kutu büyür. Margin ile 24px gridir: kutu metnin çevresinde sıkı kalır ve dışarıdaki boşluk kapsayıcının kenarlarını iter.
İkisini tek kutuda dene
İki kaydırıcıyı hareket ettir. Padding mavi kutuyu büyütür; margin ise kutuyu değiştirmeden gri kenarlardan uzaklaştırır.
Boyut satırını izle: padding kaydırıcısını oynattığında değişir, margin kaydırıcısını oynattığında aynı kalır.
Bir bakışta margin ve padding
| Padding | Margin | |
|---|---|---|
| Nerede | Kenarlığın içinde | Kenarlığın dışında |
| Arka plan | Elementin arka planını gösterir | Her zaman saydam |
| Tıklama alanının parçası | Evet | Hayır |
| Elementin boyutuna eklenir | Evet, content-box altında | Hayır |
auto olabilir | Hayır | Evet (margin: 0 auto ortalar) |
| Negatif olabilir | Hayır | Evet |
| Dikey değerler çöker | Asla | Evet, bitişik dikey margin'ler çöker |
| Yüzdeler neye göre | Kapsayıcı bloğun genişliği | Kapsayıcı bloğun genişliği |
| Tipik kullanım | Butonların, kartların, input'ların içindeki boşluk | Elementler arası boşluk, ortalama |
Her özelliğin tüm ayrıntılarıyla kendi sayfası var: CSS padding ve CSS margin.
Hangisini kullanmalı
Tek bir soru sor: boşluk elemente mi ait, yoksa elementlerin arasında mı duruyor?
- Bir buton etiketinin çevresindeki alan, bir kartın içi, bir input'un metni ile kenarlığı arasındaki boşluk: padding. Arka planı alır ve hedefi büyütür.
- İki paragraf arasındaki, kartlar arasındaki, bir bölümün çevresindeki boşluk: margin, ya da ebeveyn bir flex veya grid kapsayıcıysa
gap.
Seçimin en çok önem kazandığı yer tıklama alanıdır. Aşağıdaki iki link sayfada aynı yeri kaplıyor, ama ilkinin boşluğu padding, ikincisininki margin. Yalnızca ilki kolay tıklanıyor:
Kesikli kehribar rengi çerçeve elementin kenarıdır, yani tıklamalara ve dokunuşlara yanıt veren alan. İkinci linkin çevresindeki margin hiçbir şey yapmayan boş bir alandır.
Öğeler arası boşluk: margin mi gap mi
Bir öğe satırı ya da ızgarası için flex veya grid ebeveynindeki gap, genellikle her çocuktaki margin'lerden daha temizdir: yalnızca öğelerin arasına girer, ilkinden önceye ya da sonuncusundan sonraya asla girmez, bu yüzden geri alınacak bir şey kalmaz.
Burada gri kapsayıcı padding kullanıyor (içindeki gri boşluk), öğeler padding kullanıyor (her birinin içindeki yeşil boşluk) ve aralarındaki boşluğu gap hallediyor.
Sık yapılan hatalar
- Renkli olması gereken boşluk için margin kullanmak. Margin saydamdır. Boşluk arka planı göstermeliyse o padding'dir.
- Bir linki büyütmek için margin kullanmak. Tıklama alanı kenarlıkta biter; padding kullan.
- İki 20px dikey margin'in 40px etmesini beklemek. Bitişik dikey margin'ler 20px'e çöker. Padding asla çökmez.
- Ortalamak için
padding: autodenemek. Yalnızca marginautokabul eder. - Padding'in kutuyu büyüttüğünü unutmak.
widthpadding'i de kapsasın diyebox-sizing: border-boxekle.
Sıkça Sorulan Sorular
Margin ile padding arasındaki fark nedir?
Padding, elementin içinde, içeriği ile kenarlığı arasındaki boşluktur. Margin ise kenarlığın dışında, element ile komşuları arasındaki boşluktur. Padding elementin arka planını gösterir; margin her zaman saydamdır.
Ne zaman margin yerine padding kullanmalıyım?
Elemente ait olan boşluk için padding kullan: bir buton metninin çevresindeki alan, bir kartın içi, arka planı paylaşması ya da tıklanabilir olması gereken her şey. Ayrı elementler arasındaki boşluk için margin (ya da flex ve grid'de gap) kullan.
Padding mi margin mi elementin boyutunu büyütür?
Varsayılan box-sizing: content-box altında padding büyütür: genişliğe ve yüksekliğe eklenir. Margin elementin boyutuna asla eklenmez; çevresine boşluk ekler (width: auto olan bir blok hatta daralır, çünkü margin'leri kullanılabilir genişliğin bir kısmını alır). box-sizing: border-box ile padding bunun yerine genişliğin içinden alınır.
Padding de margin gibi negatif olabilir mi?
Hayır. Negatif padding geçersizdir ve yok sayılır; negatif margin'e ise izin verilir ve elementlerin çakışmasına yol açabilir. Padding auto da olamaz, ortalamanın margin: 0 auto ile yapılmasının nedeni budur.