0%

Flex 布局踩坑

Flex 布局的默认高度问题

将元素设置为 display:flex 后,子元素如果没有设置高度或设为 auto,将占满整个容器的高度。可以通过设置 align-items 属性来解决。

image-20210508151453100

Flex 布局的子元素宽度问题

将元素设置为 display:flex 后,子元素的宽度在不大于父元素的情况下是有效的。但是当子元素的宽度超过父元素时,实际宽度最大只会是父元素的宽度。可以通过设置 flex-shrink:0 来解决。

image-20210508153004417

flex:1 是什么意思

flex 属性是 flex-grow,flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。后两个属性是可选的,所以 flex:1 其实就是 flex-grow:1的简写。

  • flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
  • flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

总结

将一个元素设置为 display:flex 后:

  • 默认不会自动换行flex:nowrap
  • 子元素如未设置高度,将占满父元素的高度
  • 默认水平排列,起点在左端flex-direction:row

参考:

  1. 解决父元素display:flex布局下的子元素宽度无效问题
  2. Flex 布局让子项保持自身高度
  3. Flex 布局教程:语法篇