css(二) | 青训营笔记

47 阅读2分钟

布局

1.格式化上下文

BFC是block formatting context的缩写,是一种格式规范。如果说一个盒子是BFC或者有BFC特性,那么BFC表示的是block formatting context root。不管它外部显示类型时什么,但是它的内部显示类型是flow-root,其实就是这个盒子内部形成了一个新的块级格式化上下文。

如何触发一个盒子的BFC特性:

  • display:flow-root | inline-block;
  • position:absolute | fixed;
  • float:不为none;
  • overflow:不为visible

2.外边距塌陷

会产生外边距塌陷的情况:

  • 两个兄弟元素之间相邻的上下外边距
  • 父子元素之间相邻的上下外边距
  • 内容为空元素自己上下外边距相邻

消除外边距塌陷的方法:

  • 在两个相邻的上下边距之间增加border、padding或者内联元素,使之不相邻;
  • 在父子元素重叠时,除了上述方法,还可以设置父元素为BFC,使得父子不在同级BFC中

3.弹性盒子布局

Flexible Box Layout是为了提供更加高效灵活的布局方式,在即便是宽高位置的情况下,也能排列和分割盒子内部的布局。而且在不同布局方向(横向/纵向)的调整更为灵活

  • 作用于父元素(flex container):

建立一个弹性盒子: display:flex | inline-flex;

规定盒子的主轴方向:row | column |...;

子元素折行显示形式:flex-wrap:nowrap | wrap | wrap-reverse;

主轴方向子元素的排列方式:jusify-content:center | space-between |...;

交叉轴方向子元素的对齐方式:align-items:flex-start | center | stretch |...;

交叉轴方向多行子元素的布局方式:align-content:flex-start | space-between |...;

以明确值设定子元素间的间隔:gap:;

  • 作用于子元素(flex items):

规定item未放缩之前的默认大小:flex-basis:auto | 长度值...;

规定有剩余空间时,对item的分配比例:flex-grow:number;

规定空间不够时,对item的压缩的比例:flex-shrink:number;

以上三项的缩写:flex:grow shrink basis:默认 0 1 auto

规定item从左到右(row布局)显示的顺序:order:number;默认是0

规定单个item在交叉轴上的位置:align-self:auto | center | flex-start |...