我正在阅读渲染树:
在构建DOM树时,浏览器构造 另一棵树,渲染树。这棵树是视觉元素 它们将被显示的顺序。这是视觉表现 该文件。 渲染树不包含
display:none
, 定位绝对元素,HEAD。
最后一句话对我来说有点混乱。渲染树包含可见元素。所以,它应该包含绝对位置。浏览器如何呈现这些元素(display:none
,位置绝对元素,HEAD)?有人可以更详细地解释一下吗?
答案 0 :(得分:3)
我不确定您在哪里阅读该信息,但position: absolute
元素(显然)已经呈现。
有两棵树:DOM和CSSOM。两者结合起来生成构建我们看到的页面的渲染树。
根据Google Developers的说法,display: none
不会呈现。但是没有迹象表明position: absolute
也不会呈现。
Google Developers - Render-tree construction, layout, and paint
文章中的一些要点:
CSSOM和DOM树组合成一个渲染树,然后用于计算 每个可见元素 的布局,并用作 绘制过程的输入,用于渲染像素以进行屏幕显示。 (强调我的)
DOM和CSSOM树组合在一起形成渲染树。渲染树仅包含渲染页面所需的节点。
第一步是浏览器将DOM和CSSOM组合成一个“渲染树”,在页面上捕获 所有可见的DOM内容 , 加上每个节点的所有CSSOM样式信息。 (强调我的)
要构建渲染树,浏览器大致执行以下操作:
从DOM树的根开始,遍历每个可见节点。
根本看不到某些节点(例如脚本标签,元标签等),因为它们没有反映在 渲染输出。
一些节点通过CSS隐藏,并且也从渲染树中省略 - 例如上面的示例中的span节点缺少 渲染树,因为我们有一个明确的规则来设置
display: none
它的财产。对于每个可见节点,找到适当的匹配CSSOM规则并应用它们。
发出包含内容及其计算样式的可见节点。
最终输出是一个渲染,其中包含 屏幕上所有可见内容的内容和样式信息。 (强调我的)