可视化格式模型
在可视化格式模型中,文档树中的每个元素会根据框模型(box model)产生零到多个框。
不解:根据框模型产生零到多个框,产生的框指的是什么?是box model中的content box、padding box、border box、margin box吗?如果是,那么在布局中应用的所谓“主要的框(principal box)”指的又是以上哪一个呢?
可能的解答:根据W3help:1. 元素生成的框会扮演它子孙元素包含块的角色;2. 元素定位为staitc或relative的元素,其包含块由离它最近的块级、table-cell和inline-block祖先元素的内容框创建。推断主要的框恐怕是元素的内容框(content box)。
这些框的布局被以下因素管理:
- 框的尺寸和类型
- 定位体系(常规流、浮动和绝对定位)
- 在文档树中元素之间的关系(比如一个块元素包含两个互为兄弟节点的浮动元素,后面那个浮动元素的布局会受前面元素以及它的包含块的影响)
- 外部因素(如viewport,即可视窗口的大小,图片的固有尺寸会影响行内替换性元素的尺寸,从而影响布局)
简单说,可视化格式模型的定义就是,文档树中的每个元素都会根据框模型产生零个到多个框,这些框的布局被我们所熟知的各种因素统治着。
不同类型的框
- 包含块(containing block)
- 块级元素(block-level element)
- 块元素(block element)
- 块级框(block-level box)、块容器框(block container box)、块框(block box)
- 行内级元素(inline-level element)
- 行内元素(inline element)
- 行内级框(inline-level box)、原子行内级框(atomic inline-level box)、行内框(inline box)
- 匿名框(anonymous box)