Flexbox Avoid a child longer than the parent (column direction)

I am creating a basic interface for a site using flexbox. Just like a regular email layout.

For some reason, the second child (class .main-body , lightseagreen color) of the flexbox container with the column ( .content-main , plum color) has a higher height than its parent, which I do not want it to be.

I made a code snippet to show this behavior.

 html, body { width: 100%; height: 100%; background: lightblue; box-sizing: border-box; } * { box-sizing: border-box; } .container { height: inherit; background: PeachPuff; padding: 1em; display: flex; max-height: 500px; } .sidebar { flex: 0 1 15%; background: khaki; } .content { flex: 1 1 auto; background: plum; padding: 0.8em; display: flex; flex-direction: column; } .content-header { background: lightgreen; padding: 0.3em; flex: 0 0 7%; } .content-main { display: flex; background: darkseagreen; padding: 1em; height: 100%; flex: 1 1 auto; } .main-list { flex: 0 0 12%; background: lightcoral; } .main-body { flex: 0 1 auto; padding: 1em; background: lightcyan; display: flex; flex-flow: row wrap; overflow-y: scroll; } 
 <div class='container'> <div class='sidebar'> <ul> <li>Onnnne</li> <li>Twoo</li> <li>Threee</li> </ul> </div> <div class='content'> <div class='content-header'> <span>This iscontent header</span> </div> <div class='content-main'> <div class='main-list'> <ul> <li>List 1</li> <li>List 2</li> <li>List 3</li> </ul> </div> <div class='main-body'> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> </div> </div> </div> </div> 

How can I prevent a green baby from having a higher height than the parent of the plum? I want the child to simply scroll, but never be taller than his parents.

+5
source share
1 answer

Flexbox introduces auto as the new initial value for min-height . This leads to the fact that the elements of flexibility grow as high as their contents.

You can undo this by setting min-height to 0 , the old initial value:

 .content-main { min-height: 0; } 

 html, body { width: 100%; height: 100%; background: lightblue; box-sizing: border-box; } * { box-sizing: border-box; } .container { height: inherit; background: PeachPuff; padding: 1em; display: flex; max-height: 500px; } .sidebar { flex: 0 1 15%; background: khaki; } .content { flex: 1 1 auto; background: plum; padding: 0.8em; display: flex; flex-direction: column; } .content-header { background: lightgreen; padding: 0.3em; flex: 0 0 7%; } .content-main { display: flex; background: darkseagreen; padding: 1em; height: 100%; flex: 1 1 auto; min-height: 0; } .main-list { flex: 0 0 12%; background: lightcoral; } .main-body { flex: 0 1 auto; padding: 1em; background: lightcyan; display: flex; flex-flow: row wrap; overflow-y: scroll; } 
 <div class='container'> <div class='sidebar'> <ul> <li>Onnnne</li> <li>Twoo</li> <li>Threee</li> </ul> </div> <div class='content'> <div class='content-header'> <span>This iscontent header</span> </div> <div class='content-main'> <div class='main-list'> <ul> <li>List 1</li> <li>List 2</li> <li>List 3</li> </ul> </div> <div class='main-body'> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> <div class='panel'> <table> <thead> <th>First</th> <th>Second</th> <th>Third</th> <th>Third</th> <th>Third</th> <th>Third</th> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr> </tbody> </table> </div> </div> </div> </div> </div> 
+7
source

Source: https://habr.com/ru/post/1237613/


All Articles