JavaScript是如何工作的:渲染引擎和优化其性能的技巧
与 HTML一样,渲染引擎需要将 CSS 转换成浏览器可以使用的东西—— CSSOM。CSSOM 结构如下: 你想知道为什么 CSSOM 是一个树形结构? 在为页面上的任何对象计算最终样式集时,浏览器以适用于该节点的最常规规则开始(例如,如果它是 来看看具体的例子。包含在 另请注意,上面的树不是完整的 CSSOM 树,只显示我们决定在样式表中覆盖的样式。 每个浏览器都提供一组默认样式,也称为 “user agent stylesheet” 。这是我们在未明确指定任何样式时看到的样式,我们的样式会覆盖这些默认值。 不同浏览器对于相同元素的默认样式并不一致,这也是为什么我们在 CSS 的最开始要写 CSSOM 树和 DOM 树连接在一起形成一个 render tree,,渲染树用来计算可见元素的布局并且作为将像素渲染到屏幕上的过程的输入。
渲染树中的每个节点在 Webkit 中称为渲染器或渲染对象。 收下是上面 DOM 和 CSSOM 树的渲染器树的样子: 为了构建渲染树,浏览器大致执行以下操作:
“visibility:hidden” 和 “display:none” 之间的不同, “visibility:hidden” 将元素设置为不可见,但是同样在布局上占领一定空间(例如,它会被渲染成为空盒子),但是 “display:none” 的元素是将节点从整个 你可以在这里查看 RenderObject 的源代码(在 WebKit 中):https://github.com/WebKit/web... 我们来看看这个类的一些核心内容: 每个渲染器代表一个矩形区域,通常对应于一个节点的 CSS 盒模型。它包含几何信息,例如宽度、高度和位置。 渲染树的布局创建渲染器并将其添加到树中时,它没有位置和大小,计算这些值称为布局。 HTML使用基于流的布局模型,这意味着大多数时间它可以一次性计算几何图形。坐标系统相对于根渲染器,使用左上原点坐标。 布局是一个递归过程 - 它从根渲染器开始,它对应于 HTML 文档的 根渲染器的位置为 在此绘制,遍历渲染器树并调用渲染器的 (编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |