- 作者:陈大鱼头
- github: KRISACHAN
盒模型
The CSS box model describes the rectangular boxes that are generated for elements in the document tree and laid out according to the visual formatting model.
CSS盒模型描述了通过 文档树中的元素 以及相应的 视觉格式化模型(visual formatting model) 所生成的矩形盒子。
基础盒模型(CSS basic box model)
当浏览器对一个 render tree 进行渲染时,浏览器的渲染引擎就会根据 基础盒模型(CSS basic box model) ,将所有元素划分为一个个矩形的盒子,这些盒子的外观,属性由CSS
来决定。
我们在浏览器控制台输入如下代码就可以看到页面的每一个元素都是由一个矩形来包裹的,这些就是盒子。
$$('*').forEach(e => {
e.style.border = '1px solid';
})
图示如下:
视觉格式化模型(visual formatting model)
CSS 的视觉格式化模型(visual formatting model) 是根据 基础盒模型(CSS basic box model) 将 文档(doucment) 中的元素转换一个个盒子的实际算法。
官方说法就是: 它规定了用户端在媒介中如何处理文档树( document tree )。
每个盒子的布局由以下因素决定:
- 盒子的尺寸
- 盒子的类型:行内盒子 (inline)、行内级盒子 (inline-level)、原子行内级盒子 (atomic inline-level)、块级盒子 (block-level)