为什么渲染树不包含绝对定位的元素?

时间:2015-12-15 18:49:14

标签: javascript html css google-chrome browser

我正在阅读渲染树:

  

在构建DOM树时,浏览器构造   另一棵树,渲染树。这棵树是视觉元素   它们将被显示的顺序。这是视觉表现   该文件。 渲染树不包含display:none,   定位绝对元素,HEAD。

最后一句话对我来说有点混乱。渲染树包含可见元素。所以,它应该包含绝对位置。浏览器如何呈现这些元素(display:none,位置绝对元素,HEAD)?有人可以更详细地解释一下吗?

http://taligarsiel.com/Projects/howbrowserswork1.htm

1 个答案:

答案 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规则并应用它们。

    •   
    • 发出包含内容及其计算样式的可见节点。

    •   
  •   
  • 最终输出是一个渲染,其中包含 屏幕上所有可见内容的内容和样式信息。 (强调我的)

  •   

阅读完整文章:Render-tree construction, layout, and paint