The flex-shrink
property is a sub-property of the Flexible Box Layout module.
It specifies the “flex shrink factor”, which determines how much the flex item will shrink relative to the rest of the flex items in the flex container when there isn’t enough space on the row.
When omitted, it is set to 1
and the flex shrink factor is multiplied by the flex basis when distributing negative space.
Syntax
flex-shrink: <number> .flex-item { flex-shrink: 2; }
Demo
<ul class="flex-container"> <li class="flex-item flex1">1</li> <li class="flex-item flex2">2</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; } .flex-item { background: tomato; padding: 10px; border: 5px solid red; color: white; font-weight: bold; font-size: 2em; text-align: center; } .flex1 { flex: 1 1 20em; } .flex2 { flex: 2 2 20em; }
In this demo:
- The first item has
flex: 1 1 20em
(shorthand forflex-grow: 1
,flex-shrink: 1
,flex-basis: 20em
) - The second item has
flex: 2 2 20em
(shorthand forflex-grow: 2
,flex-shrink: 2
,flex-basis: 20em
)
Both flex items want to be 20em wide. Because of the flex-grow (first parameter), if the flex container is larger than 40em, the 2nd child will take twice as much leftover space as the first child. But if the parent element is less than 40em wide, then the 2nd child will have twice as much shaved off of it as the 1st child, making it look smaller (because of the 2nd parameter, flex-shrink).
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