关于格式化上下文,时间久了又有些忘记,在这儿整理一下
一、在正常的文档流中,存在块级格式化上下文BFC和行级格式化上下文IFC两种,见名知意,BFC的排列顺序是自上而下,而IFC的排列顺序是从左到右。
二、元素的display属性会直接决定元素是块级还是行级,捎带一提inline-block也属于行级。
-
- 一个块级元素里边只能存在一种格式化上下文,不会出现既是BFC又是IFC。如果在BFC中创建了一个行级元素,那么在行级元素外会再生成一个块级元素来对他进行包裹
- 每当一个块级元素处于IFC中,那这个块级元素会创建新的BFC
- 当一个块级元素自身也在BFC中时,此时设置块级元素的overflow属性不为visible时可以创建BFC(这也为解决外边距塌陷的问题提供了思路)
- 绝对定位和浮动可以创建BFC
说到外边距合并,除了1px的外边框、内边距,以及overflow: hidden可以解决之外,还可以设置一个before伪元素来解决 .有问题的盒子::before {display: table; content: ""},这个table布局可以用特殊布局来解决这个问题