3-पंक्ति लेआउट में:
- शीर्ष पंक्ति को उसकी सामग्री के अनुसार आकार दिया जाना चाहिए
- नीचे की पंक्ति को पिक्सेल में एक निश्चित ऊँचाई होनी चाहिए
- कंटेनर को भरने के लिए मध्य पंक्ति का विस्तार होना चाहिए
समस्या यह है कि जैसे ही मुख्य सामग्री फैलती है, यह शीर्ष लेख और पाद लेख पंक्तियों को मिटा देता है:
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>
सीएसएस:
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; */
}
बेला:
- http://jsfiddle.net/7yLFL/1/ (छोटी सामग्री के साथ काम करना)
- http://jsfiddle.net/7yLFL/ (बड़ी सामग्री के साथ टूटा हुआ)
मैं भाग्यशाली स्थिति में हूं कि मैं नवीनतम और सबसे बड़ी सीएसएस का उपयोग कर सकता हूं, विरासत ब्राउज़रों की अवहेलना कर सकता हूं। मैंने सोचा था कि मैं फ्लेक्स लेआउट का उपयोग करने के लिए अंततः पुराने टेबल-आधारित लेआउट से छुटकारा पा सकता हूं। किसी कारण के लिए, यह वह नहीं है जो मैं चाहता हूं ...
रिकॉर्ड के लिए, "शेष ऊँचाई को भरने" के बारे में SO पर कई संबंधित प्रश्न हैं, लेकिन कुछ भी नहीं जो समस्या को हल करता है जो मुझे फ्लेक्स के साथ हो रहा है। refs:
- शेष स्क्रीन स्थान की ऊँचाई को भरने के लिए एक div बनाएं
- शेष ऊर्ध्वाधर स्थान भरें - केवल सीएसएस
- एक कंटेनर को शेष ऊंचाई / एक कंटेनर की चौड़ाई को भरने के लिए है जब इसे किसी अन्य div के साथ साझा करना है?
- नेस्टेड डिव स्ट्रेच को बचे हुए कंटेनर डिविज़न के 100% हिस्से तक बनाएं
- मैं अपने फ्लेक्सबॉक्स लेआउट को 100% ऊर्ध्वाधर स्थान कैसे ले सकता हूं?
- आदि