I need to stretch yellow child to fill all height of parent. Without setting parent height. Height of parent should be dependent on blue child text. https://jsfiddle.net/7vaequ1c/1/
<div style='display: flex'> <div style='background-color: yellow;height: 100%; width: 20px'> </div> <div style='background-color: blue'> some<br> cool<br> text </div> </div>
When using Flexbox, the major mistake is to start using height: 100%
all over.
We are used to that in many cases, though when it comes to Flexbox, it often breaks it instead.
The solution is simple, just remove the height: 100%
, and it will work automatically.
The reason it does, is for flex item in row direction (the default), the align-items
control the vertical behavior, and as its default is stretch
this just work as is.
Stack snippet
<div style='display: flex'> <div style='background-color: yellow; width: 20px'> </div> <div style='background-color: blue'> some<br> cool<br> text </div> </div>
If I understood correctly, you are looking for the align-items
property, which defines the layout along the cross axis, in this case vertically.
You can find a good overview here: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
.flexbox { display: flex; flex-direction: row; justify-content: center; align-items: stretch; // <-- stretch vertical (default value, can be omitted here) align-content: center; } .box { padding: 1em; text-align: center; margin: 1em; } .box--yellow { background-color: yellow; } .box--blue { background-color: blue; color: white; }
<div class="flexbox"> <div class="box box--yellow"> yellow </div> <div class="box box--blue"> some<br> cool<br> text </div> </div>
Remove
height:100%;
and instead do something like this example :
<div style="display:flex; flex-direction:column">
<div style="flex-grow:1;"> Item 1 </div>
<div style="flex-grow:1;"> Item 2 </div>
</div>
above example will show you what you want.
<div style='display: flex'> <div style='background-color: yellow; width: 20px'> </div> <div style='background-color: blue'> some<br> cool<br> text </div> </div>
Here you go:
<div style='display: flex;'> <div style='background-color: yellow; flex: none auto; width: 20px'></div> <div style='background-color: blue'> some<br> cool<br> text </div> </div>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.