[ CSS补档肆 | 青训营笔记]

65 阅读2分钟

这是我参加「第五届青训营」伴学笔记创作活动的第7天

块级排版上下文

  • Block Formatting Context(BFC)
  • 某些容器会创建一个BFC
  • 根元素
  • 浮动,绝对定位,inline-block
  • Flex子项和Gird子项
  • overflow值不是visible的块盒
  • display:flow-root

BFC内的排版规则

  • 盒子从上到下摆放
  • 垂直margin合并
  • BFC内盒子的margin不会和外面的合并
  • BFc不会和浮动元素重叠

Flex Box

  • 一种新的排版上下文
  • 它可以控制子级盒子的:
摆放的流向
摆放顺序
盒子的宽度和高度
水平和垂直方向的对齐
是否允许执行

主轴和侧轴

3.png 主轴:元素摆放的方向 侧轴:与主轴垂直的方向

justify-content

  • flex-start:靠左插空格
  • flex-end:靠右插空格
  • center:在中间插空格
  • space-between:两边对齐插空格
  • space-around:两边留空间插空格
  • space-evenly:间距相等留空格

4.png

align-items

  • flex-start:在上面对齐
  • flex-end:在下面对齐
  • center:中间对齐
  • stretch:铺满(默认)
  • baseline:基线对齐(所有子元素的基线对齐)

5.png

Flexibility

  • 可以设置子项的弹性:当空间有剩余空间时,会伸展,容器空间不够时,会收缩。
  • flex-grow 有剩余空间时的伸展能力
  • flex-shrink 容器空间不足时收缩的能力
  • flex-basis 没有伸展或收缩时的基础长度
flex-grow

6.png 给A的力给了2的伸展力,给B给了1的伸展力(把容器的空间减去300之后分给A和B以2:1的比例,不是直接2:1) flex-shrink

7.png 容器空间不够的时候,通过flex-shrink指定哪个元素能被压缩,然后进行处理

类比于其它属性,flex也可以在css中进行缩写,如下图所示

8.png

Gird布局

引入原因:不止进行一维的排列,要进行二维的处理和排列

display:grid

  • display:gird使元素生成一个块级的Grid容器
  • 使用grid-template相关属性将容器划分为网络
  • 设置每一个子项占据那些行/列