Skip to content

Commit 0b459fd

Browse files
committed
feat: 添加BFC
1 parent 32a2114 commit 0b459fd

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

docs/CSS/BFC.md

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
### BFC
2+
3+
**块级格式化上下文**,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
4+
5+
6+
7+
> IE 下为 Layout,可通过 zoom:1 触发
8+
9+
- 触发条件:
10+
11+
- 根元素(`html`
12+
13+
- 浮动元素(`float` 不为 `none`
14+
15+
- 绝对固定定位元素(`position``absolute``fixed`
16+
17+
- 表格的标题和单元格(`display``table-caption``table-cell`
18+
19+
- 匿名表格单元格元素(`display``table``inline-table`
20+
21+
- 行内块元素(`display``inline-block`
22+
23+
- `overflow` 的值不为 `visible` 的元素
24+
25+
26+
- 规则:
27+
28+
- 属于同一个 BFC 的两个相邻 Box 垂直排列
29+
30+
- 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠
31+
32+
- BFC 中子元素的 margin box 的左边, 与包含块 (BFC) border box 的左边相接触 (子元素 absolute 除外)
33+
34+
- BFC 的区域不会与 float 的元素区域重叠
35+
36+
- 计算 BFC 的高度时,浮动子元素也参与计算 - 文字层不会被浮动层覆盖,环绕于周围
37+
38+
39+
40+
- 应用
41+
42+
- 阻止`margin`重叠
43+
44+
- 可以包含浮动元素 —— 清除内部浮动(清除浮动的原理是两个`div`都位于同一个 BFC 区域之中)
45+
46+
- 自适应两栏布局
47+
48+
- 可以阻止元素被浮动元素覆盖
49+
50+
51+
52+
- BFC的范围:
53+
54+
> A block formatting context contains everything inside of the element creating it, that is not also inside a descendant element that creates a new block formatting context.
55+
56+
- 直译过来就是, `BFC`包含创建它的元素的所有子元素, 但不包括创建了新`BFC`的子元素的内部元素
57+
- 简单来说,子元素如果又创建了一个新的 `BFC`,那么它里面的内容就不属于上一个 `BFC` 了,这体现了 `BFC` **隔离** 的思想
58+
- 也就是所说,**一个元素不能同时存在于两个 BFC 中**

0 commit comments

Comments
 (0)