CSS flex-shrink 属性

CSS 参考手册 CSS 参考手册


实例

A, B, C 设置 flex-shrink:1, D , E 设置为 flex-shrink:2:

< ! DOCTYPE html > < html > < head > < meta charset = " utf-8 " > < title > 云搜索MX教程(yssmx.com) </ title > < style >
#content { display: flex ; width: 500 px ; } #content div { flex-basis: 120 px ; border: 3 px solid rgba ( , , , .2 ) ; } .box { flex-shrink: 1 ; } .box1 { flex-shrink: 2 ; }
</ style > </ head > < body > < p > div 总宽度为 500px, flex-basic 为 120px。 </ p > < p > A, B, C 设置 flex-shrink:1。 D , E 设置为 flex-shrink:2 </ p > < p > D , E 宽度与 A, B, C 不同 </ p > < div id = " content " > < div class = " box " style = " background-color:red; " > A </ div > < div class = " box " style = " background-color:lightblue; " > B </ div > < div class = " box " style = " background-color:yellow; " > C </ div > < div class = " box1 " style = " background-color:brown; " > D </ div > < div class = " box1 " style = " background-color:lightgreen; " > E </ div > </ div > </ body > </ html >

尝试一下 »

实例解析:

flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。

本例中A、B、C 显式定义了 flex-shrink 为 1,D、E 定义了 flex-shrink 为 2,所以计算出来总共将剩余空间分成了 7 份,其中 A、B、C 占 1 份,D、E 占 2 份,即1:1:1:2:2

我们可以看到父容器定义为 500px,子项被定义为 120px,子项相加之后即为 600 px,超出父容器 100px。那么超出的 100px 需要被 A、B、C、D、E 消化 通过收缩因子,所以加权综合可得 100*1+100*1+100*1+100*2+100*2=700px

于是我们可以计算 A、B、C、D、E 将被移除的溢出量是多少:
										A 被移除溢出量:(100*1/700)*100,即约等于14px
B 被移除溢出量:(100*1/700)*100,即约等于14px
C 被移除溢出量:(100*1/700)*100,即约等于14px
D 被移除溢出量:(100*2/700)*100,即约等于28px
E 被移除溢出量:(100*2/700)*100,即约等于28px
									

最后A、B、C、D、E的实际宽度分别为: 120-14=106px, 120-14=106px, 120-14=106px, 120-28=92px,120-28=92px,此外,这个宽度是包含边框的。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本。

属性
flex-shrink 29.0
21.0 -webkit-
11.0
10.0 -ms-
28.0
18.0 -moz-
9.0
6.1 -webkit-
17.0

定义和用法

flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。

注意: 如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。

默认值: 1
继承:
可动画化: 是。请参阅 可动画化(animatable) 尝试一下
版本: CSS3
JavaScript 语法: object .style.flexShrink="5" 尝试一下


CSS 语法

flex-shrink: number |initial|inherit;

属性值

描述
number 一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1。
initial 设置该属性为它的默认值。请参阅 initial
inherit 从父元素继承该属性。请参阅 inherit


相关文章

CSS 参考手册: flex 属性

CSS 参考手册: flex-basis 属性

CSS 参考手册: flex-direction 属性

CSS 参考手册: flex-flow 属性

CSS 参考手册: flex-grow 属性

CSS 参考手册: flex-wrap 属性


CSS 参考手册 CSS 参考手册