flex属性的拆分

192 阅读2分钟

说一下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%

image.png

image.png

设置flex:1的同时设置width属性观察下面的结果可以发现flex:1优先级要高于width

image.png

image.png