深入CSS下 | 青训营笔记

67 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天 本节课主要是学习dom的排版方式,包括常规流、行级块级排版上下文、flex和grid布局,以及浮动和定位,老师讲解的比较细致,当然css也不只这些内容,其他的需要我们自己去探索。

常规流

  • 根元素、浮动和决对定位的元素会脱离常规流
  • 其他元素都在常规流之内
  • 常规流中的盒子,在某种排版上下文中参与布局

行级排版上下文

  • IFC(Inline Formatting Context)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC内的排版规则
    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align决定一行内盒子的水平对齐
    • Vertical-align决定一个盒子在行内的垂直对齐
    • 避开浮动float元素

块级排版上下文

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

BFC内的排版规则

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

Flex Box

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

主轴和垂直于主轴的交叉轴构成

包括:

  • justify-content
  • align-items
  • align-self
  • order
  • flexibility
    • flex-grow 有剩余空间时的伸展能力
    • flex-shrink 容器空间不足时收缩的能力
    • Flex-basis 没有伸展或收缩时的基础长度

Grid布局

声明display:grid

使用grid-template的属性将容器划分为网格

float浮动

定义:非IE浏览器下,容器不设高度且子元素浮动时,容器高度不能被内容撑开。 此时,内容会溢出到容器外面而影响布局。这种现象被称为浮动

浮动的工作原理:

  • 浮动元素脱离文档流,不占据空间(引起“高度塌陷”现象)
  • 浮动元素碰到包含它的边框或者其他浮动元素的边框停留

清除浮动的方式:

  • 给父级div定义height属性
  • 最后一个浮动元素之后添加一个空的div标签,并添加clear:both样式
  • 包含浮动元素的父级标签添加overflow:hidden或者overflow:auto
  • 使用 :after 伪元素。由于IE6-7不支持 :after,使用 zoom:1 触发 hasLayout

position定位

属性含义
static默认值,非定位元素
relative相对于自身原本位置偏移,不脱离文档流
absolute绝对定位,相对非static祖先元素定位
fixed相对于视口绝对定位