Genişlik ve yükseklik ayarlamak
width ve height bir elementin içerik kutusunun boyutunu ayarlar. Varsayılan olarak padding ve kenarlık bu boyutun dışına eklenir.
Kutu 260'a 100 piksel: 240'a 80 içerik artı her kenarda 10px padding. box-sizing: border-box ile tam olarak 240'a 80 olurdu; ikisini de kutu modeli sayfası açıklıyor.
Değerler
| Değer | Örnek | Anlamı |
|---|---|---|
auto | width: auto | Varsayılan. Bloklar kapsayıcılarının genişliğini doldurur; yükseklik içeriğe uyar |
| Uzunluk | 300px, 20rem | Sabit bir boyut |
| Yüzde | 50% | Kapsayıcı bloğun genişliğinin (width için) ya da yüksekliğinin (height için) |
| Viewport birimleri | 100vh, 50vw, 100dvh | Tarayıcı penceresinin |
min-content | width: min-content | Olabildiğince dar, en uzun kelime belirler |
max-content | width: max-content | İçeriğin tek satırdaki genişliği kadar |
fit-content | width: fit-content | max-content gibi, ama kapsayıcıdan asla geniş değil |
height: 100% neden hiçbir şey yapmaz
Yüzdelik bir height, yüzdesi alınacak belirli yükseklikte bir ebeveyne ihtiyaç duyar. Ebeveynin yüksekliği auto olduğunda, ki normal durum budur, çocuğun height: 100% değeri de auto gibi davranır.
İlk çocuk yalnızca metni kadar uzun. İkincisi ebeveynini dolduruyor, çünkü ebeveynin bir yüksekliği var. Bütün bir sayfa zincirini yüzdelerle çalıştırmak için html ve body'ye kadar her atanın bir yüksekliği olması gerekir; çoğu düzenin bunun yerine flexbox ya da grid kullanmasının nedeni budur: çocukları hiç yüzde olmadan doldurmak için esner.
min-height ve max-width: esneyen boyutlar
Sabit boyutlar kolay bozulur: sabit bir yükseklik metin beklenenden uzun olduğunda taşar, sabit bir genişlik ise bir telefon için fazla geniştir. min- ve max- özellikleri tam boyutlar yerine sınırlar koyar.
| Özellik | Anlamı |
|---|---|
min-width | Bundan asla dar değil |
max-width | Bundan asla geniş değil |
min-height | Bundan asla kısa değil, ama büyüyebilir |
max-height | Bundan asla uzun değil (fazla içerik taşar) |
Telefon gibi 360px'ten dar bir ekranda kartlar ekranla birlikte küçülür, çünkü max-width yalnızca bir tavandır.
Hem bir boyut hem bir sınır uygulandığında sınırlar kazanır: max-width, width'ü yener, min-width de max-width'ü yener.
width: auto ve width: 100%
Bir blok element için width'ü auto'da bırakmak neredeyse her zaman istediğin şeydir. auto, padding ve kenarlık dahil bütün kutuyu kapsayıcıya sığdırır. 100% ise içeriği kapsayıcı kadar geniş yapar ve padding ile kenarlığı üstüne ekler:
width: 100%, varsayılan olarak blok olmayan elementlerde (bir <input>, bir <img>, bir inline-block) hâlâ kullanışlıdır, tercihen box-sizing: border-box ile birlikte.
İçeriğe göre boyutlandırma: fit-content
Bir bloğu inline-block'a çevirmeden yalnızca metni kadar geniş yapmak için fit-content kullan:
margin-inline: auto ile birlikte fit-content, tam olarak metni kadar geniş kalan bir etiketi ya da buton benzeri bir bloğu ortalar.
Tam yükseklikte bölümler ve viewport birimleri
vh viewport yüksekliğinin %1'i, vw ise genişliğinin %1'idir. Telefonlarda tarayıcının adres çubuğu kaydırdıkça büyüyüp küçülür, bu yüzden 100vh gördüğünden daha uzun olabilir. Dinamik birim dvh görünür alanı takip eder, svh ise en küçük görünür yüksekliği kullanır:
.hero {
min-height: 100vh; /* fallback */
min-height: 100dvh; /* follows mobile toolbars */
}
Tam ekran bölümler için height değil min-height kullan; böylece çok metni olan küçük bir ekran da büyüyebilen bir bölüm alır. İçeriği sığmayan sabit bir yükseklik taşar; bununla CSS overflow sayfası ilgileniyor.
Sık yapılan hatalar
- Yüksekliği olmayan bir ebeveynin içinde
height: 100%.autogibi davranır. Ebeveyne bir yükseklik ver ya da flex veya grid kullan. width: 100%artı padding. Element kapsayıcısından taşar. Blok genişlikleriniauto'da bırak ya dabox-sizing: border-boxkullan.- Metin kapsayıcılarında sabit yükseklik. Daha uzun metin ya da daha büyük bir yazı tipi taşmasın diye
min-heightkullan. - Satır içi bir elementte
width.<span>ve<a>,widthveheightdeğerlerini yok sayar; onlarıinline-blockya dablockyap. - Sayfa sarmalayıcısında
width: 1200px. Her telefonda yana kayar. Bunun yerinemax-width: 1200pxkullan.
Sıkça Sorulan Sorular
height: 100% neden çalışmıyor?
Yüzdelik bir yükseklik ebeveynin yüksekliğinin yüzdesidir ve yalnızca o yükseklik belirli olduğunda çalışır. Ebeveynin yüksekliği auto ise (içeriğine göre boyutlanıyorsa) yüzde auto olarak işlenir. Ebeveyne bir yükseklik ver ya da çocukları yüzde olmadan esneten flexbox veya grid kullan.
width: 100% ile width: auto arasındaki fark nedir?
Bir blok element için auto, padding ve kenarlığı dahil kapsayıcıyı doldurur. width: 100% ise içerik genişliğini kapsayıcının genişliğine eşitler, bu yüzden varsayılan box-sizing: content-box altında her padding ya da kenarlık elementin taşmasına neden olur.
CSS'te min-height ne işe yarar?
Bir elementin sahip olabileceği en küçük yüksekliği ayarlar ve yine de içeriğiyle büyümesine izin verir. min-height: 200px boş bir karta 200px verir, daha fazla metni olan bir kart ise taşmak yerine uzar; sabit bir height buna izin vermezdi.
width ile max-width arasındaki fark nedir?
width tam bir boyut ayarlar. max-width ise bir üst sınır koyar: element örneğin bir telefonda daha dar olabilir ama asla daha geniş olamaz. width: 100%; max-width: 600px; küçük ekranları doldurur, büyüklerde 600px'te durur.
Bir element tam ekran yüksekliğinde nasıl yapılır?
min-height: 100vh kullan (ya da mobil tarayıcı araç çubukları hesaba katılsın diye 100dvh). height yerine min-height, içerik ekrandan uzunsa bölümün büyümesine izin verir.