CSS'deki box-sizing
özellik, uygulandığı öğe için kutu modelinin nasıl işleneceğini kontrol eder.
.module ( box-sizing: border-box; )
Bunu kullanmanın en yaygın yollarından biri, sözde öğeler dahil sayfadaki tüm öğelere uygulamaktır:
*, *::before, *::after ( box-sizing: border-box; )
Buna genellikle "evrensel kutu boyutlandırma" denir ve bu, çalışmanın iyi bir yoludur! width
Ayarladığınız (değişmez) , zihinsel matematik yapmak zorunda kalmadan ve birden çok özellikten gelen genişliklerden gelen karmaşıklığı yönetmek zorunda kalmadan elde ettiğiniz genişliktir. Hatta burada bir kutu boyutlandırma farkındalık günümüz var.
Değerler
content-box
: varsayılan. Genişlik ve yükseklik değerleri yalnızca öğenin içeriği için geçerlidir. Dolgu ve kenarlık kutunun dışına eklenir.padding-box
: Genişlik ve yükseklik değerleri, öğenin içeriği ve dolgusu için geçerlidir. Kenarlık kutunun dışına eklenir. Şu anda yalnızca Firefox bupadding-box
değeri desteklemektedir .border-box
: Genişlik ve yükseklik değerleri içerik, dolgu ve kenarlık için geçerlidir.inherit
: üst öğenin kutu boyutunu devralır.
Misal
Bu örnek resim, varsayılan content-box
(üst) ile border-box
(alt) karşılaştırır:
Görüntüler arasındaki kırmızı çizgi, elemanların genişlik değerini temsil eder. Varsayılana sahip öğenin box-sizing: content-box;
, dolgu ve kenarlık içerik kutusunun dışına eklendiğinde bildirilen genişliği aştığına, box-sizing: border-box;
uygulanan öğenin ise belirtilen genişliğe tamamen sığdığına dikkat edin.
Kutu Boyutlandırmayı Kullanma
Diyelim ki bir öğe ayarladınız width: 100px; padding: 20px; border: 5px solid black;
. Varsayılan olarak, ortaya çıkan kutu 150 piksel genişliğindedir. Bunun nedeni, varsayılan kutu boyutlandırma modelinin, content-box
bir öğenin beyan edilen genişliğini yalnızca içeriğine uygulayan, dolguyu ve kenarlığı öğenin kutusunun dışına yerleştirmesidir. Bu, elemanın ne kadar yer kapladığını etkili bir şekilde artırır.
Eğer değiştirirseniz box-sizing
için padding-box
, dolgu elementin kutunun içinde itilir. Daha sonra, kutu 110 piksel genişliğinde olacak, içeride 20 piksel dolgu ve dışarıda 10 piksel kenarlık olacak. Kutunun içine dolguyu ve bordürü koymak isterseniz kullanabilirsiniz border-box
. Kutu 100 piksel genişliğinde olacaktır - 10 piksellik kenarlık ve 20 piksellik dolgu öğenin kutusunun içine itilir.
Demo
CodePen'de CSS-Tricks (@ css-tricks) ile kutu boyutlandırma değerlerinin Kalem Karşılaştırmasına bakın.
İlişkili
width
height
padding
border
Tarayıcı Desteği
Krom | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
Hiç *† | 3 * † | 1 ‡ | 7 * | 8 * | 2.1 * † | Hiç * |
* padding-box
desteklenmiyor
† eski sürümler -webkit
ön ek gerektirir (Chrome 1-9, Safari 3-5, Android 2.1-3.x)
‡ -moz
28 sürümüne kadar önek gerekli, 29'dan itibaren ön ek yapılmamış.