【图文详解】flex-box的基本概念

217 阅读2分钟

前置知识

flex轴线.png

对父容器进行操作

flex-wrap

flex-wrap.png flex-wrap.jpg

flex-direction

flex-direction.png

justify-content(左右排列的走向)

align-items(上下排列的走向,一列只有一个item)

“ as the justify-content version for the cross-axis”

  • stretch (default): stretch to fill the container
  • flex-start / start / self-start
  • flex-end / end / self-end
  • center
  • baseline

align-content(一列有多个item)

  • flex-start:与纵轴的起点(cross start)对齐。
  • flex-end:与纵轴的终点对齐。
  • center:与纵轴的中点对齐。
  • space-between:与纵轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个纵轴。

对Items进行操作

align-self属性

  • 允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性
  • 默认值为auto,表示继承父元素的align-items属性
  • 如果没有父元素,则等同于stretch
  • 该属性可取6个值,除了auto,其他都与align-items属性完全一致
    align-self.png

order属性

  • 定义项目排列顺序
  • 数组越小越靠前
  • 默认为0
    order.png

flex-grow

  • 剩余空间,按照比例添加给各个item
  • 剩余空间:flex容器大小 - 所有flex项目大小
  • 所有项目都有相同系数,获得相同的剩余空间
  • 否则根据flex-grow决定的比例分配剩余空间
  • 例子
    flex-grow
    image.png image.png

flex-shrink

  • 超出空间 = 各个item的宽度之和 - 父容器的宽度
  • 超出空间,让各个item按照比例减去相应的部分
  • 所以item的默认宽度相加时,大于容器时收缩
  • 收缩比例是根据flex-shrink的值,初始值为1
  • 参数为0时,表示未压缩
    shrink为0
  • 参数不可为负
    flex-shrink.jpg flex-shrink

flex-basis

  • 设置每一个item(flex元素)的初始值大小
  • 默认值为auto,项目本来的大小
    image.png image.png
  • 统一设置过了flex-basis,后面再设置不起作用
    image.png

flex属性

  • flex-grow, flex-shrink 和 flex-basis的简写
  • 默认值为0 1 auto
  • flex:1;就只使用了flex-grow:1;
  • 后两个属性可选
  • 两个快捷值:auto (1 1 auto) 和 none (0 0 auto)
  • 优先使用这个属性