浅谈css中的BFC

173 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

前情提要

了解什么是BFC之前先了解下文档流。

  • 文档流:英文名称是normal flow。是指HTML中元素在计算布局排版的过程中,所有处于文档流中的元素会自动的从左到右(非块级元素),从上到下(块级元素)的规则排列。
  • 文档流分为三种:
    • 普通流:从左到右(行内元素),从上到下(块级元素)
    • 浮动流(flot):先按照普通流排列,再根据浮动方向进行排列
    • 定位流(position: absolute/fixed): 根据具体定位坐标排列

什么是BFC?

  • BFC: 全拼是Block Formatting Context。意思是格式化上下文。是web页面中盒模型布局的css渲染模式,属于一个独立的渲染区域渲染规则除几个特性之外与外部的渲染规则一致)。可以理解为一个沙箱,内部怎么样跟外部没有任何关系。

BFC的触发条件

  1. 浮动元素的flot值不为none。
  2. position的值不为static或者relative
  3. display的值为:flex,inline-block,table-cell,table-caption或者inline-flex
  4. overflow的值不是visible
  5. 根元素,即HTML元素

BFC的特性或者说BFC的作用

  1. 内部块级元素会在垂直方向上一个接一个的放置
  2. 垂直上的距离取决于margin值。同一个BFC区域内部相邻的box的margin会出现塌陷情况。
  3. 默认情况下(从左向右)每个元素的margin box的左边与包含块border box的左边相接触,如果是从右向左,则刚好相反
  4. BFC的独立渲染区域不会与浮动渲染区域重叠
  5. 计算BFC的高度时浮动元素也参与计算。
  6. BFC内部区域的渲染不会影响到外部区域。
  7. 元素的类型和display属性,决定了这个块级元素的类型。不同类型的Box会参与不同的Formatting Context

示例

计算BFC的高度时浮动元素也参与计算。

BFC的高度中包含浮动元素的高度.png