yükseklik:% 100 veya min-yükseklik: html ve gövde öğeleri için% 100?


82

Düzenleri tasarlarken html, bodyöğeleri ' heightolarak ayarlıyorum 100%ama bazı durumlarda bu başarısız oluyor, peki ne kullanılmalı?

html, body {
   height: 100%;
}

veya

html, body {
   min-height: 100%;
}

Her yöntemin kendi kusurları olduğu için bu fikir temelli değildir, öyleyse önerilen yol nedir ve neden?

Yanıtlar:


193

Arka plan resimlerini uygulamaya çalışıyorsanız htmlve bodybu tüm tarayıcı penceresini doldurmazsa. Bunun yerine şunu kullanın:

html {
   height: 100%;
}

body {
   min-height: 100%;
}

Benim gerekçem burada verilmiştir (burada arka planları bu şekilde nasıl uygulayacağımı bütünsel olarak açıklayacağım):

Bu arada, belirtmek zorunda sebebi heightve min-heighthiç htmlve bodyne eleman herhangi yerleşik yüksekliğe sahip olduğundan, sırasıyla olduğunu. Her ikisi de height: autovarsayılan olarak. Yüksekliği% 100 olan görüntü alanıdır, bu nedenle height: 100%görüntü alanından alınır ve daha sonra bodyiçeriğin kaydırılmasına izin vermek için minimum olarak uygulanır .

İlk yol, height: 100%her ikisinde de kullanmak body, görüntü alanı yüksekliğinin ötesine geçmeye başladıktan sonra içeriğiyle genişlemeyi engeller . Teknik olarak bu , içeriğin kaydırılmasını engellemez , ancak bodygenellikle istenmeyen bir durum olan katlamanın altında bir boşluk bırakılmasına neden olur .

İkinci yol, min-height: 100%her ikisini de kullanmak body, tam yüksekliğe genişlemeye neden olmaz , htmlçünkü min-heightbir yüzde ile açık bir ifade bodyyoksa üzerinde çalışmaz .htmlheight

Eksiksizlik adına, CSS2.1'in 10. bölümü tüm ayrıntıları içerir, ancak bu son derece kıvrımlı bir okuma olduğundan, burada anlattığımın ötesinde bir şeyle ilgilenmiyorsanız atlayabilirsiniz.


4
Bunu en çok sevdiğim şey :) height: 100% is taken from the viewport, then applied to body as a minimum to allow for scrolling of contentkolay kolay çözüm ... teşekkürler //
Bay Alien

Merak ediyorum, kaydırma çubukları sihirli bir şekilde nasıl görünüyor? htmlEleman vardır overflow:visibleBen kaydırma çubukları belgenin tamamı, normal akış görüntülenmesine izin vermek için tarayıcı davranışına bağlı görünür varsayalım böylece, varsayılan olarak.
Fabrício Matté

@ Fabrício Matté: overflow: autoKaydırma çubuklarının geldiği yer olan görüntü alanına çevrilir . Bölüm 11'de ele alınmıştır: w3.org/TR/CSS21/visufx.html
BoltClock

10
@BoltClock Çocuğun vücudun% 100'ünü buraya nasıl getireceğine dair bir fikrin var mı? bu işe yarıyor
Bay Alien

1
kutu boyutlandırma: border-box kenar boşluklarını etkilemez. Dolgu, evet, ama bu kişisel tercihlere bağlı.
BoltClock

17

Görüntü alanı yükseklik ( vh) birimini kullanabilirsiniz:

body {
    min-height: 100vh;
}

Ebeveyn boyuna değil ekrana bağlıdır, bu nedenle html yüksekliğine ihtiyacınız yoktur:% 100.


Yine de bu ne gibi ekstra avantajlar sunuyor?
xji

Ekstra avantaj yok, sorunu çözmenin başka bir yolu.
Damjan Pavlica

mobil cihazların bunu nasıl anladığına dikkat edin
GWorking

Sadece hiçbir tarayıcının bu birimleri desteklemediğini unutmayın ... Önce tarayıcı uyumluluğunu kontrol edin: caniuse.com/#feat=viewport-units
dBlaze
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.