The flex-grow
property is a sub-property of the Flexible Box Layout module.
IT defines the ability for a flex item to grow if necessary. It accepts a unitless value that serves as a proportion. It dictates what amount of the available space inside the flex container the item should take up.
For example, if all items have flex-grow
set to 1, every child will set to an equal size inside the container. If you were to give one of the children a value of 2, that child would take up twice as much space as the others.
Syntax
flex-grow: <number> .flex-item { flex-grow: 2; }
Demo
The following demo shows how the remaining space is being calculated according to the different values of flex-grow
<ul class="flex-container"> <li class="flex-item">1</li> <li class="flex-item">2</li> <li class="flex-item">3</li> <li class="flex-item">4</li> </ul>
.flex-container { padding: 0; margin: 0; list-style: none; -ms-box-orient: horizontal; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -moz-flex; display: -webkit-flex; display: flex; -webkit-justify-content: space-around; justify-content: space-around; -webkit-flex-flow: row wrap; flex-flow: row wrap; -webkit-align-items: stretch; align-items: stretch; } .flex-item:nth-of-type(1) { flex-grow: 1; } .flex-item:nth-of-type(2) { flex-grow: 1; } .flex-item:nth-of-type(3) { flex-grow: 2; } .flex-item:nth-of-type(4) { flex-grow: 1; } .flex-item:nth-of-type(5) { flex-grow: 1; } .flex-item { background: tomato; border: 3px solid rgba(0,0,0,.2); line-height: 100px; color: white; font-weight: bold; font-size: 2em; text-align: center; }
All items have a flex-grow
value of 1 except the 3rd one which has a flex-grow
value of 2. It means when the available space is distributed, the 3rd flex-item will have twice as much space as others.
Related Properties
Browser Support
- (modern) means the recent syntax from the specification (e.g.
display: flex;
) - (hybrid) means an odd unofficial syntax from 2011 (e.g.
display: flexbox;
) - (old) means the old syntax from 2009 (e.g. display: box;)
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
21+ (modern) 20- (old) |
3.1+ (old) | 2-21 (old) 22+ (new) |
12.1+ (modern) | 10+ (hybrid) | 2.1+ (old) | 3.2+ (old) |
Blackberry browser 10+ supports the new syntax.
Leave a Reply