after researching the flexible box model for a whole day, I must say I really like it. It implements the functionality I implement in JavaScript in a fast and clean way. One thing however bugs me:
I can't expand a div to take the full size calculated by the flexible box model!!!
To illustrate it I'll proved an example. In it the two flexible places take the exact with and height, but the div inside it only takes the height of the "<p>...</p>"
element. For this example it doesn't matter but what I originally was trying was placing a "flexible box model" inside another "flexible box model" and this must be possible in my opinion
html, body { font-family: Helvetica, Arial, sans-serif; width: 100%; height: 100%; margin: 0px; padding: 0px; } #box-1 { background-color: #E8B15B; } #box-2 { background-color: #C1D652; } #main { width: 100%; height: 100%; overflow-x: auto; overflow-y: hidden; } .flexbox { display:-moz-box; display:-webkit-box; display: box; text-align: left; overflow: auto; } H1 { width: auto; } #box-1 { height: auto; -moz-box-orient: vertical; -webkit-box-orient: vertical; box-orient: vertical; -moz-box-flex: 3; -webkit-box-flex: 3; box-flex: 3; } #box-2 { height: auto; min-width: 50px; -moz-box-orient: vertical; -webkit-box-orient: vertical; box-orient: vertical; -moz-box-flex: 1; -webkit-box-flex: 1; box-flex: 1; } #fullsize{ background-color: red; height: 100%; }
<div id="main" class="flexbox"> <div id="box-1" class="flexbox"> <div id="fullsize"> <p>Hallo welt</p> </div> </div> <div id="box-2" class="flexbox"> </div> </div>
I've been wrestling with this myself, but have finally managed to come up with a solution.
See this jsFiddle, although I have only added webkit prefixes so open in Chrome.
You basically have 2 issues which I will deal with separately.
position:relative;
on the parent of the child. position:absolute;
on the child.overflow-y:auto;
on the scrollable div. height:0;
See this answer for more information on the scrolling issue.
You must also make the div you want to expand a flex-box as well and add a flex value. This fixes the problem.
#fullsize{ background-color: red; display: -webkit-box; display: box; display: -moz-box; box-flex:1; -webkit-box-flex:1; -moz-box-flex:1; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With