在上一节css基础之--flex布局中已经介绍了flex布局的一些基本的属性以及含义。 之前在做项目的时候经常会用到flex布局, 最开始使用的时候经常会遇到flex:1的这样一种写法, 在网上看了各路解说, 依然感觉不是很清晰,最近看MDN文档的时候, 突然想起来看看官方对于项目属性flex到底是怎么描述呢?看完之后茅塞顿开, 特此再记录一下
成分属性
此属性是以下 CSS 属性的简写:
语法
/* 关键字值 */
flex: auto;
flex: initial;
flex: none;
/* 一个值,无单位数字:flex-grow */
flex: 2;
/* 一个值,width/height: flex-basis */
flex: 10em;
flex: 30px;
flex: min-content;
/* 两个值:flex-grow | flex-basis */
flex: 1 30px;
/* 两个值:flex-grow | flex-shrink */
flex: 2 2;
/* 三个值:flex-grow | flex-shrink | flex-basis */
flex: 2 2 10%;
/*全局属性值 */
flex: inherit;
flex: initial;
flex: unset;
可以使用一个,两个或三个值来指定 flex属性。
单值语法: 值必须为以下其中之一:
- 一个无单位数 (
<number>) : 它会被当作flex:<number> 1 0;<flex-shrink>的值被假定为 1,然后<flex-basis>的值被假定为0。 - 一个有效的宽度 (
width) 值:它会被当作<flex-basis>的值。 - 关键字
none,auto或initial.
双值语法: 第一个值必须为一个无单位数,并且它会被当作 <flex-grow> 的值。第二个值必须为以下之一:
- 一个无单位数:它会被当作
<flex-shrink>的值。 - 一个有效的宽度值:它会被当作
<flex-basis>的值。
三值语法:
- 第一个值必须为一个无单位数,并且它会被当作
<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-grow。负值无效。省略时默认值为 1。 (初始值为0) -
<'flex-shrink'>定义 flex 元素的
flex-shrink。负值无效。省略时默认值为1。 (初始值为1) -
<'flex-basis'>定义 flex 元素的
flex-basis属性。若值为0,则必须加上单位,以免被视作伸缩性。省略时默认值为 0。(初始值为 auto)