FlexBox

258 阅读3分钟

display: flex(父容器属性);

给元素添加display: flex,该元素变成了一个弹性容器(flex container),它的直接子元素变成了弹性子元素(flex item)。弹性子元素默认是在同一行按照从左到右的顺序并排排列。弹性容器像块元素一样填满可用宽度,但是弹性子元素不一定填满其弹性容器的宽度。弹性子元素高度相等,该高度由它们的内容决定

flex-direction(父容器属性)

用来设置主轴方向

  • row:主轴沿着inline方向延伸(inline:文字书写方向,汉字自左向右)
  • row-reverse:inline反方向,自右向左
  • column:主轴沿着block排列的方向(display: block的块盒,自上而下)
  • column-reverse:block的反方向,自下而上
  1. 反转的不只是位置的变化,还包括子项目顺序的反转
  2. 不设置item元素的宽高:
    不设置宽高的情况下,子项目在主轴方向的尺寸为内容撑开的大小,在侧轴方向会撑满整个空间

当值设置为:row
不设置宽高: 捕获.PNG
设置宽高:

width: 100px;
height: 50px;

捕获1.PNG

当值设置为:column
不设置宽高:

捕获3.PNG
设置宽高:

width: 100px;
height: 50px;

捕获4.PNG

justify-content(父容器属性)

设置子项目在主轴方向上的对齐方式

  • flex-start:默认值,沿主轴起点对齐
  • flex-end:沿主轴终点对齐
  • center:沿主轴居中对齐
  • space-between:沿主轴空白居中分布,两侧贴边
  • space-around:沿主轴空白环绕分布
  • space-evenly:沿主轴空白均匀分布

当值设置为:flex-start

flex-start.PNG

当值设置为:flex-end

flex-end.PNG

当值设置为:center

center.PNG

当值设置为:space-between

space-between.PNG

当值设置为:space-around

space-around.PNG

当值设置为:space-evenly

space-evenly.PNG

align-items(父容器属性)

设置单行子项目在侧轴方向上的对齐方式

  • flex-start:沿侧轴起点对齐(高度随内容撑开)
  • center:沿侧轴居中对齐(高度随内容撑开)
  • flex-end:沿侧轴终点对齐(高度随内容撑开)
  • stretch:沿侧轴拉伸撑开整个容器(不设置高度则拉伸,设置高度则固定)
  • baseline:沿着基线对齐(高度随内容撑开)
  • normal:默认值。等同于stretch

flex-wrap(父容器属性)

设置子项目是否换行

  • nowrap:默认值,不换行(子项目在容器中空间不够的话,缩放以适应宽度)
  • wrap:换行(设置为换行后,才按照设置的宽度呈现,空间不够会换行)
  • wrap-reserve:换行并反转

align-content(父容器属性)

设置多行子项目在侧轴上的对齐方式(类似于justify-content)

  • flex-start:默认值,沿侧轴起点对齐(高度随内容撑开)
  • center:沿侧轴居中对齐(高度随内容撑开)
  • flex-end:沿侧轴终点对齐(高度随内容撑开)
  • space-between:沿侧轴空白居中分布,两侧贴边(高度随内容撑开)
  • spance-around:沿侧轴空白环绕分布
  • spance-evenly:沿侧轴空白均匀分布(高度随内容撑开)
  • stretch:高度自动时,所有子项目的高度会撑满父容器高度。设置高度则会按照固定高度呈现,且占据的高度不会变,这点是和flex-start不同的
  • normal:默认值,等同于stretch