Flex知识点梳理

649 阅读3分钟

开篇

在项目开发中,设计图的还原是前端开发人员基本功之一,还原少不了布局和适配。项目中我们会遇到各种各样的布局,排版,样式,同一种布局和样式,采用不同的布局方法,其代码量也会有多少差异,适用场景也会不同。

本文主要对flex(FLexible Box)弹性布局知识点进行梳理,flex相比于传统布局在一些特殊布局上具有更好的灵活性,比如垂直居中布局等,本文采用flex布局的元素称为容器,容器中的子元素成员称为子项。


正文开始

使用display来创建弹性容器:

display: flex;

当设置为设置为弹性容器后容器中的子子元素的float,vertical-align属性将失效

在felx布局中主要有两个概念,如图

flex.png

  1. 弹性容器(flex container)
    • 父容器(flex container)
    • 子项(flex items弹性容器的子元素)
  2. 轴线(axis)
    • 主轴(main axis)
    • 交叉轴(cross axis) flex-axis.png

容器属性归类

flex中的属性主要分为父容器属性,子项属性

父容器属性主要有六个

1.1 flex-direction 规定子项主轴的排列方向

  • row (默认值) 子项水平排列,从左向右 flexstart.png
  • row-reverse 水平反向排列,从右向左 flex-direction.png
  • column 子项垂直排列,从上向下 flex-direction-column.png
  • column-reverse 子项垂直反向,从下向上 direction-column-reverse.png 1.2 flex-wrap 规定当父容器中的子项一行排列不下是是否换行
  • wrap 超出换行 flex-nowrap.png
  • nowrap (默认)超出不换行 flex-wrap.png
  • wrap-reverse 超出换行并反向排列 flex-wrapreverse.png

1.3 flex-flow flex-direction和flex-wrap的复合写法

1.4 justify-content
规定子项和剩余空间的分配方式

  • flex-start 子项沿主轴开始的位置排列,剩余空间分配在最后一个子容器后面 justify-start.png
  • center 子项居中排列,剩余空间均分在第一个子项前和最后一个子项后 justify-center.png
  • flex-end 子项沿主轴排列,最后一个子项在主轴结束位置,剩余空间分配在第一个子项之前 justify-end.png
  • space-between 子项两端对齐排列,剩余空间平均分配给两个子项之间 justify-between.png
  • space-around 子项平均排列,剩余空间平均分配给子项两端,两边相邻子项的与父容器的间距是子项间距的一半 justify-around.png
  • space-evenly 子项平均/平滑分布,剩余空间分配方式为均等分再子项周围(兼容性较差) justify-evenly.png

1.5 align-items 规定子项沿交叉轴的排列方式

  • flex-start 子项沿交叉轴开始的位置排列,剩余空间分配在每一个子项的底部 flexstart.png
  • center 子项居中排列,剩余空间均分在每一个子项的上下部分 align-content-center.png
  • flex-end 子项交叉轴结束排列,剩余空间分配在每一个子项顶部 align-content-end.png
  • baseline 子项基于文字的基线对齐 align-content-basline.png
  • stretch 未设置高度的子项会被拉伸铺满整个容器高度 align-content-stretch.png

1.6 align-content 定义多个轴线的对齐方式

  • flex-start 沿开始位置排列 align-start.png
  • center 居中对齐 align-center.png
  • flex-end 沿结束位置排列 align-end.png
  • space-between 两端对齐 align-between.png
  • space-around 平均分布 align-around.png
  • stretch 拉伸平铺 align-stretch.png

子项属性

1.1 order 设置子项的排列顺序,数值越小越靠前,默认值为0 order.png

1.2 flex 设置子项所占剩余空间的比例 flex.png

1.3 align-self 设置指定子项的排列方式,设置会覆盖掉align-itmes

  • auto

  • flex-start

  • center

  • flek-end

  • stretch

  • baseline align-self.png