3 sıralı bir düzende:
- üst sıra içeriğine göre boyutlandırılmalıdır
- alt satırın piksel cinsinden sabit bir yüksekliği olmalıdır
- orta sıra kabı doldurmak için genişlemelidir
Sorun, ana içerik genişledikçe, üstbilgi ve altbilgi satırlarını ezmesidir:
HTML:
<section>
<header>
header: sized to content
<br>(but is it really?)
</header>
<div>
main content: fills remaining space<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- uncomment to see it break - ->
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- -->
</div>
<footer>
footer: fixed height in px
</footer>
</section>
CSS:
section {
display: flex;
flex-flow: column;
align-items: stretch;
height: 300px;
}
header {
flex: 0 1 auto;
background: tomato;
}
div {
flex: 1 1 auto;
background: gold;
overflow: auto;
}
footer {
flex: 0 1 60px;
background: lightgreen;
/* fixes the footer: min-height: 60px; */
}
Vaktini boşa harcamak:
- http://jsfiddle.net/7yLFL/1/ (çalışıyor, küçük içerikle)
- http://jsfiddle.net/7yLFL/ (bozuk, daha büyük içerikli)
Eski tarayıcıları göz ardı ederek en son ve en büyük CSS'yi kullanabileceğim şanslı bir durumdayım. Sonunda eski tablo tabanlı düzenlerden kurtulmak için esnek düzeni kullanabileceğimi düşündüm. Nedense istediğimi yapmıyorum ...
Kayıt için, SO'da "kalan yüksekliği doldurma" hakkında birçok ilgili soru var, ancak flex ile yaşadığım sorunu çözen hiçbir şey yok. refs:
- Kalan ekran boşluğunun yüksekliğini bir div yapmak
- Kalan dikey alanı doldurun - yalnızca CSS
- Bir kabın başka bir div ile paylaşırken kalan yüksekliğini / genişliğini dolduracak bir div var mı?
- İç içe div değerini kalan konteyner div yüksekliğinin% 100'üne uzatın
- Esnek kutu düzenimin% 100 dikey yer kaplamasını nasıl sağlayabilirim?
- vb