flex布局用途

47 阅读1分钟

垂直居中

通过设置容器的align-item: center;即可

多列同高

当你有多列区域,每列区域内容不定,但想要同一高度时,设置容器的align-items: stretch;即可,通常align-items: normal;stretch效果一样。没有设置高度的盒子会被拉伸到容器高度。

盒子grow

默认盒子的flex-grow: 0;即当容器的内容宽度 > 所有盒子宽度时,盒子不会拉伸,通过设置盒子的flex-grow即可按增长系数进行拉伸

盒子shrink

默认盒子的flex-shrink: 1;即当容器的内容宽度 < 所有盒子宽度时,盒子的内容宽度会被压缩到最小尺寸

flex与overflow结合

当容器设置了高度,同时所有盒子的高度 > 容器高度时, 如果其中有盒子设置了overflow,那么再缩完所有盒子到最小高度后,会继续缩设置了overflow的盒子的内容高度。

image.png

basis

  • 当basis为auto且盒子设置了width时,width即为basis
  • 当basis为auto但盒子没有设置widthbasismax-content
  • 当basis为0,意味着所有空间都可被分配。如果盒子grow系数相同,盒子会以同样的比例增长,均分后如果都大于min-conntent就表现为平分容器: image.png 如果均分如果有盒子的min-content大于宽度时,就会挤压其它盒子,表现为: image.png

grow与basis

在增长时,按照正可用空间与grow系数加权

shrink与basis

收缩时,除了负可用空间和shrink系数外,还和盒子的basis有关,最终盒子不会小于min-content