Menu

CSS Width ve Height: min, max, % ve auto Rehberi

width ve height bir elementin kutusunun boyutunu ayarlar. Sabit ve yüzdelik boyutları, height: 100%'ün neden çoğu zaman hiçbir şey yapmadığını, esnek düzenler için min-height ve max-width'ü, auto ile 100% farkını ve fit-content anahtar kelimelerini öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

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ÖrnekAnlamı
autowidth: autoVarsayılan. Bloklar kapsayıcılarının genişliğini doldurur; yükseklik içeriğe uyar
Uzunluk300px, 20remSabit bir boyut
Yüzde50%Kapsayıcı bloğun genişliğinin (width için) ya da yüksekliğinin (height için)
Viewport birimleri100vh, 50vw, 100dvhTarayıcı penceresinin
min-contentwidth: min-contentOlabildiğince dar, en uzun kelime belirler
max-contentwidth: max-contentİçeriğin tek satırdaki genişliği kadar
fit-contentwidth: fit-contentmax-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.

ÖzellikAnlamı
min-widthBundan asla dar değil
max-widthBundan asla geniş değil
min-heightBundan asla kısa değil, ama büyüyebilir
max-heightBundan 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%. auto gibi 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şliklerini auto'da bırak ya da box-sizing: border-box kullan.
  • 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-height kullan.
  • Satır içi bir elementte width. <span> ve <a>, width ve height değerlerini yok sayar; onları inline-block ya da block yap.
  • Sayfa sarmalayıcısında width: 1200px. Her telefonda yana kayar. Bunun yerine max-width: 1200px kullan.

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.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA