Bu, bildirilen bir webkit (krom / safari) hatasıdır, en az yüksekliğe sahip ebeveynlerin çocukları height özelliğini devralamaz: https://bugs.webkit.org/show_bug.cgi?id=26559
Görünüşe göre Firefox da etkileniyor (şu anda IE'de test edilemiyor)
Olası geçici çözüm:
- konum ekle: #containment'e göre
- konum ekle: # çevreleme-gölge-sola mutlak
Hata, iç elemanın mutlak konumlandırmaya sahip olduğunu göstermez.
Bkz. Http://jsfiddle.net/xrebB/
10 Nisan 2014'te Düzenle
Şu anda gerçekten ana konteynırlara min-height
ve konteynerin yüksekliğini miras alan alt öğelere ihtiyacım olan bir proje üzerinde çalıştığım için biraz daha araştırma yaptım.
Birincisi: Artık mevcut tarayıcı davranışının gerçekten bir hata olup olmadığından emin değilim. CSS2.1 özellikleri şunları söylüyor:
Yüzde, üretilen kutunun içerdiği bloğun yüksekliğine göre hesaplanır. Kapsayıcı bloğun yüksekliği açıkça belirtilmezse (yani içerik yüksekliğine bağlıdır) ve bu öğe tam olarak konumlandırılmazsa, değer 'otomatik' olarak hesaplanır.
Konteynırımın üzerine bir minimum yükseklik koyarsam , yüksekliğini açıkça belirtmiyorum - bu yüzden elemanım bir auto
yükseklik almalı . Webkit ve diğer tüm tarayıcılar da aynen bunu yapıyor.
İkincisi, bulduğum geçici çözüm:
Konteyner öğemi onunla display:table
birlikte ayarlarsam, height:inherit
tam olarak min-height
% 100 veririm gibi davranır . Ve - daha da önemlisi - alt öğeyi buna ayarlarsam display:table-cell
, konteyner öğesinin yüksekliğini mükemmel bir şekilde devralır -% 100 veya daha fazla olsun.
Tam CSS:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
İşaretleme:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
Bkz. Http://jsfiddle.net/xrebB/54/ .
display:flex
veflex-direction:column
ve çocuk vermekflex:1
.