深入理解CSS flex属性
提示
设置display:flex;如何正确使用flex属性
flex的属性值
flex属性是flex-grow,flex-shrink和flex-basis的缩写
- 宽度的分配逻辑
- flex-basis就是分配固定的宽度。
- flex-grow就是宽度仍有剩余的时候该如何分配。
- flex-shrink就是剩余宽度不足的时候该如何分配。
语法解构
CSS语法中的特殊符号的含义绝大多数就是正则表达式中的含义,例如单管道符|
,方括号[]
,问号?
,个数范围花括号{}
等。具体说明:
flex: auto;
flex: none;
flex: [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
flex: auto;
flex: none;
flex: [ <'flex-grow'> <'flex-shrink'> <'flex-basis'> ]
flex: auto;
flex: none;
/* 3个值 */
flex: 1 1 100px;
flex: auto;
flex: none;
/* 2个值 */
flex: 1 100px;
/* 3个值 */
flex: 1 1 100px;
flex: auto;
flex: none;
flex: [ <'flex-grow'> <'flex-shrink'> <'flex-basis'> ]
文字表述
1个值
如果flex的属性值只有一个值,则:如果是数值,例如
flex: 1
,则这个1
表示flex-grow
,此时。**更正为:**此时flex-shrink
和flex-basis
都使用默认值,分别是1
和auto
flex-shrink
和flex-basis
的值分别是1
和0%
,注意,这里的flex-basis
的值是0%
,而不是默认值auto
。如果是长度值,例如flex: 100px
,则这个100px
显然指flex-basis
,因为3个缩写CSS属性中只有flex-basis
的属性值是长度值。此时**更正为:**此时flex-grow
和flex-shrink
都使用默认值,分别是0
和1
。flex-grow
和flex-shrink
都是1
,注意,这里的flex-grow
的值是1
,而不是默认值0
。2个值
如果flex的属性值有两个值,则第1个值一定指
flex-grow
,第2个值根据值的类型不同表示不同的CSS属性,具体规则如下:如果第2个值是数值,例如flex: 1 2
,则这个2
表示flex-shrink
,此时**更正为:**此时flex-basis
使用默认值auto
。flex-basis
计算值是0%
,并非默认值auto
。如果第2个值是长度值,例如flex: 1 100px
,则这个100px
指flex-basis
,此时flex-shrink
使用默认值0
。3个值
如果
flex
的属性值有3个值,则这长度值表示flex-basis
,其余2个数值分别表示flex-grow
和flex-shrink
。下面两行CSS语句的语法都是合法的,且含义也是一样的: