说一下flex:1,有哪三种属性,base设置的是什么?不设
置是什么?base和width的优先级?
flex:1的三种属性
- flex-grow
- flex-shrink
- flex-basis flex-grow若被赋值为一个正整数,flex元素以flex-basis为基础,沿主轴方向增长尺寸。这会使该元素延展,并占据此方向上的可用空间。如果有其它元素也允许被延展,那么他们会各自占据可空间的一部分。
flex-shrink属性是处理flex元素收缩的问题。如果我们的容器中没有足够排列flex元素的空间,那么可以把flex元素flex-shrink属性设置为正整数来缩小它所占空间到flex-basis以下,可以给flex-shrink不同的数值,大的数值收缩程度越大。
flex-basis定义了该元素的空间大小,flex容器中除了元素所占的空间外的富余空间就是可用空间。该属性的默认值是auto。如果该元素没有设置width,felx-basis的值就采用元素内容的尺寸。
几种预定义的值:
- flex:initial
- flex:auto
- flex:none
- flex:< positive-number> flex:initial是把flex元素重置为Flexbox的初始值,它相当于felx:0 1 auto。flex-grow的值为0,所以flex元素不会超过他们flex-basis的尺寸。flex-shrink的值为1,所以可以缩小flex元素来防止他们溢出。flex-basis的值为auto。Flex元素尺寸可以是在主维度上设置,也可以是根据内容自动得到的。
flex:auto等同于flex:1 1 auto,flex元素在需要的时候既可以拉伸也可以伸缩
flex:none可以把flex元素设置为不可伸缩。它和设置为flex:0 0 auto是一样的。元素既不能拉伸或者收缩,但元素会按具有flex-basis:auto属性的flex进行布局
flex:2 = flex:2 1 auto
基础设置为flex:1实际上是把三个属性设置为flex-grow:1 flex-shrink:1;flex-basis:0%
设置flex:1的同时设置width属性观察下面的结果可以发现flex:1优先级要高于width