Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
CSS box-sizing, bir elemente verilen width ve height değerlerinin içerik, iç boşluk ve kenarlıkla birlikte toplam ölçüye nasıl dönüştürüleceğini belirleyen özelliktir. CSS başlangıç değeri content-box olduğunda genişliğe padding ve border eklenir. border-box kullanıldığında ise verilen genişlik ve yükseklik, içerik ile birlikte iç boşluk ve kenarlığı da kapsar.

İki değer arasındaki fark​


CSS kutu modeli bir elementi içerik, padding, border ve margin alanlarına ayırır. margin her iki box-sizing değerinde de elementin ölçüsüne dahil değildir. Fark, width ve height değerlerinin hangi kutuyu ölçtüğündedir.
Örneğin bir kutuya width: 300px, her iki kenarda padding: 20px ve border: 4px verirseniz:
  • content-box ile gerçek genişlik 300 + 40 + 8 = 348 piksel olur.
  • border-box ile gerçek genişlik 300 piksel kalır; içerik alanı padding ve border için küçülür.
Bu nedenle özellikle yüzde genişlik kullanan sütunlarda, kartlarda ve formlarda border-box taşma sorunlarını azaltır.

Çalıştırılabilir en küçük örnek​


Aşağıdaki HTML ve CSS'yi boş bir dosyaya koyup tarayıcıda açın:

Kod:
<div class="box content">content-box</div>
<div class="box border">border-box</div>

<style>
.box {
  width: 300px;
  padding: 20px;
  border: 4px solid #333;
  margin-bottom: 12px;
  background: #eee;
}

.content {
  box-sizing: content-box;
}

.border {
  box-sizing: border-box;
}
</style>

Beklenen sonuç, ilk kutunun dıştan 348 piksel, ikinci kutunun ise dıştan 300 piksel genişlikte görünmesidir. İlk hesapta 300 piksel içerik, her iki tarafta toplam 40 piksel padding ve toplam 8 piksel border vardır. İkinci kutuda bu alanlar 300 piksellik toplam genişliğin içinden pay alır.

İki kutu aynı genişlikte görünüyorsa geliştirici araçlarında uygulanan stilleri kontrol edin. Başka bir kuralın width, padding veya box-sizing değerini ezmesi mümkündür. Ayrıca box-sizing ölçüyü belirler; uzun içerik kutunun içine sığmıyorsa metin taşması, satır kırılması veya overflow gibi ayrı bir düzenleme gerekebilir.

Değerwidth/height neyi ölçer?Padding ve border sonucu
content-boxYalnızca içerik alanınıToplam ölçüye eklenir
border-boxİçerik + padding + border alanınıBelirtilen ölçünün içinde kalır

Projelerde hangi kullanım tercih edilmeli?​


Padding ve border’ın belirtilen ölçünün içinde hesaplanmasını istiyorsanız border-box genellikle daha anlaşılır tercihtir. Bir projede tutarlı davranış sağlamak için tüm elementlere doğrudan veya kalıtımla uygulanabilir:

Kod:
html {
  box-sizing: border-box;
}

*, *::before, *::after {
  box-sizing: inherit;
}

Bu yaklaşımda html temel değeri alır; elementler ve sözde elementler inherit ile aynı davranışı kullanır. Yalnızca belirli bir kutunun varsayılan hesaplamaya dönmesi gerekiyorsa o seçicide box-sizing: content-box tanımlayabilirsiniz.

Sık yapılan hata, border-box seçildiğinde padding ve border'ın yok olduğunu sanmaktır. Bunlar görünmeye devam eder; yalnızca toplam ölçünün içine dahil edilir. Diğer hata ise margin'i hesaplamaya katmaktır. Margin kutunun dışındaki boşluktur ve box-sizing tarafından kontrol edilmez. Son olarak, box-sizing kalıtsal değildir; bu yüzden yalnızca body üzerinde verilen değer, tüm alt elementlere kendiliğinden uygulanmaz.

Sık sorulan sorular​

Belirtilen width padding ve border toplamından küçükse ne olur?​

İçerik alanı negatif olmaz; en az sıfıra indirilir. Bu nedenle border-box, çok kalın padding veya border verilmiş bir kutuyu keyfi derecede küçültemez. Hesapta yalnız width değerini değil iç boşlukları ve kenarlıkları da inceleyin.

Bazı form kontrolleri neden zaten border-box gibi davranıyor?​

CSS başlangıç değeri content-box olsa da tarayıcının kendi stil sayfası tablo, select, button ve bazı input türlerine border-box uygulayabilir. Projenizdeki gerçek sonucu geliştirici araçlarının hesaplanan stil bölümünden kontrol edin; bütün öğelerin aynı kullanıcı aracısı stiline sahip olduğunu varsaymayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.