描述
适用于:flex子项
CSS属性 flex 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间。这是一个简写属性,用来设置 flex-grow, flex-shrink 与 flex-basis。
取值
initial
元素会根据自身宽高设置尺寸。它会缩短自身以适应 flex 容器,但不会伸长并吸收 flex 容器中的额外自由空间来适应 flex 容器 。相当于将属性设置为"flex: 0 1 auto"。
auto
元素会根据自身的宽度与高度来确定尺寸,但是会伸长并吸收 flex 容器中额外的自由空间,也会缩短自身来适应 flex 容器。这相当于将属性设置为 "flex: 1 1 auto".
none
元素会根据自身宽高来设置尺寸。它是完全非弹性的:既不会缩短,也不会伸长来适应 flex 容器。相当于将属性设置为"flex: 0 0 auto"。
<flex-grow>
增长系数,当容器剩余空间大小flex子项大小之和时,此系数有效,分配flex容器剩余空间。默认值0,也就是不增长大小。
<flex-shrink>
收缩系数,当flex子项大小之和大于flex容器大小,此系统有效,收缩flex子项。默认值1,也就是默认收缩
<flex-basis>
初始大小,flex子项初始大小。默认值auto,如果flex子项有宽度或高度值,那么auto就会按照flex子项大小展示,如果设置为0px(必须有单位),flex子项的初始大小就会失效。
语法
/* 基础 */ flex: auto; // 自动设置尺寸 flex: initial; // 元素会根据自身宽高设置尺寸。 flex: none; // 元素会根据自身宽高来设置尺寸。 // 根据上面的取值定义来看,none和initial的区别就在于收缩系数的变化,none不会收缩,initial等比收缩 flex: 2; // 表示flex-grow /* 一个没有单位的数字表示:flex-grow */ flex: 2; /* 一个带单位的值表示:flex-basis,具体是宽度还是高度值取决于flex-direction方向 */ flex: 10em; flex: 30px; /* 两个值,第一个表示flex-grow,第二个表示flex-basis */ flex: 1 30px; /* 两个没有单位的值: 第一个表示flex-grow,第二个表示flex-shrink */ flex: 2 2; /* 三个值: flex-grow | flex-shrink | flex-basis */ flex: 2 2 10%; /* Global values */ flex: inherit; flex: initial; flex: unset;