【浏览器渲染原理】渲染树构建之渲染树和DOM树的关系(转载 学习中。。。)

在DOM树构建的同时,浏览器会构建渲染树(render tree)。渲染树的节点(渲染器),在Gecko中称为frame,而在webkit中称为renderer。渲染器是在文档解析和创建DOM节点后创建的,会计算DOM节点的样式信息。

在webkit中,renderer是由DOM节点调用attach()方法创建的。attach()方法计算了DOM节点的样式信息。attach()是自上而下的递归操作。也就是说,父节点总是比子节点先创建自己的renderer。销毁的时候,则是自下而上的递归操作,也就是说,子节点总是比父节点先销毁。

如果元素的display属性被设置成了none,或者如果元素的子孙继承了display:none,renderer不会被创建。节点的子类和display属性一起决定为该节点创建什么样的渲染器。但是visibility:hidden的元素会被创建。

在webkit中,根据display属性的不同,创建不同的renderer,比如:

(1) display:inline,创建的是RenderInline类型。

(2) display:block,创建的是RenderBlock类型。

(3) display:inline-block,创建的是RenderBlock类型。

(4) display:list-item,创建的是RenderListItem类型。

position:relative和position:absolute的元素在渲染树中的位置与DOM节点在DOM树中的位置是不一样的。

DOM树和渲染树的对应关系如下图:

时间: 2024-10-05 02:37:35

【浏览器渲染原理】渲染树构建之渲染树和DOM树的关系(转载 学习中。。。)的相关文章

WebKit渲染基础(转载 学习中。。。)

概述 WebKit是一个渲染引擎,而不是一个浏览器,它专注于网页内容展示,其中渲染是其中核心的部分之一.本章着重于对渲染部分的基础进行一定程度的了解和认识,主要理解基于DOM树来介绍Render树和RenderLayer树的构建由来和方式. 那么什么是DOM?简单来说,DOM是对HTML或者XML等文档的一种结构化表示方法,通过这种方式,用户可以通过提供标准的接口来访问HTML页面中的任何元素的相关属性,并可对DOM进行相应的添加.删除和更新操作等.相关信息可查阅W3C的文档,这里不再赘述. 基

jquery: json树组数据输出到表格Dom树的处理方法

项目背景 项目中需要把表格重排显示 处理方法 思路主要是用历遍Json数组把json数据一个个append到4个表格里,还要给每个单元格绑定个单击弹出自定义对话框,表格分了单双行,第一行最后还要改rowspan呵呵,程序还没优化运行正常先给客户展示先:) 1,表格数据->json数组 var keyArr = new Array(); var jsonArr = new Array(); $list.find("thead th").each(function () { keyA

为什么每个前端开发者都要理解页面的渲染?(转载 学习中。。。)

文章转载自:开源中国社区 [http://www.oschina.net] 今天我要将关注点放到页面渲染以及其重要性上.虽然已经有很多文章提到过这个主题了,但大部分信息都是零碎的片段.为了思考这件事情,我需要研究很多信息的来源.这也就是为什么我觉得我应该写这篇文章的原因.我相信这篇文章对新手会很有用,并且对想刷新和巩固他们已经了解的东西的高手也同样适用. 渲染应该从最开始当页面布局被定义时就进行优化,样式和脚本在页面渲染中扮演着非常重要的角色.专业人员知道一些技巧以避免一些性能问题. 这篇文章不

DOM加载:浏览器渲染和操作顺序(转载 学习中。。。)

DOM加载:浏览器渲染和操作顺序 1.HTML解析完毕 2.外部脚本和样式表加载完毕 3.脚本在文档内解析并执行 4.HTML DOM完全构造起来 5.图片和外部内容加载 6.网页完成加载 基于这个顺序,我们会发现如果在DOM完全加载之前使用DOM可能会发生错误(这个可能是很多初学者曾遇到的问题),而如果用onload加载函数又必须等待图片.视频等元素的加载,造成无法运行JavaScript.

浏览器渲染原理

浏览器输入url到页面呈现发生了什么? 1:输入url 浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照Web方式来处理,浏览器会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址.对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来. 2:域名解析 通过DNS解析获取网址的IP地址, IP 地址:IP 协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址.IP 地址如同门牌号码,通过

页面渲染原理

渲染流程 1.解析HTML文档 2.生成DOM树 3.生成渲染树.渲染树的节点只包括DOM树种可见节点,除了节点,渲染树含有节点的样式. 4.浏览器根据渲染树绘制页面. 与绘制相关的还有两个概念,回流和重绘 回流:元素的位置.大小或盒模型等改变影响了布局需要重新渲染部分或全部页面. 重绘:元素背景颜色等改变但不影响布局需要重新绘制部分页面. 可见,回流对性能的伤害大于重绘.且回流必然引起重绘. 引起回流的操作举例: DOM节点增删 display:none position变化 flow变化 窗

【转】浏览器的渲染原理简介

How Browsers Work 这篇文章把浏览器的很多细节讲的很细,也有中文的翻译版本,现在转载的这篇是陈皓写的,目的的为了能在上班途中,或是坐马桶时就能读完,并能从中学会一些能用在工作上的东西. 浏览器工作大流程 先看个图 从图中,可以看到: 1) 浏览器会解析三个东西 * 一个 HTML/SVG/XHTML,事实上,Webkit 有三个C++的类对应这三类文档.解析这三种文件会产生一个DOM Tree * CSS,解析CSS会产生CSS规则树 * JavaScript 脚本,主要是通过

不同内核的浏览器,以及渲染原理

一. "Rendering Engine"渲染引擎,也可以叫做浏览器内核(这个部分要扩展一下,原本的浏览器内核分为渲染引擎和Js引擎,后来Js引擎越来越独立,内核就倾向于只指渲染引擎了),是浏览器最核心的部分,浏览器内核的不同对于网页的语法解释会有不同,所以渲染出来的效果也不同,简单说就是不同的内核决定了浏览器如何显示页面,也是因为这个原因导致了浏览器兼容性问题的出现. 下面是5种浏览器分别采用的不同引擎: - IE内核 Trident- 谷歌内核 WebKit / Blink(由we

浏览器渲染原理及流程

我们可能都知道浏览器含有一个渲染引擎,用来渲染窗口所展示的内容.默认情况下,渲染引擎可以显示html.xml文档及图片,它也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF阅读器插件,用于显示PDF格式.但是其具体的渲染原理和流程估计也有很多人都不知道或者不清楚吧.这些天研究了一下浏览器的渲染原理,有了些心得,在这里跟大家分享一下,这里只讨论渲染引擎最主要的用途--显示应用了CSS之后的html及图片. 渲染引擎简介 本文所讨论的浏览器--Firefox.Chrome和Safari