加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

发布时间:2019-01-18 12:11:35 所属栏目:移动互联 来源:前端小智编译
导读:当你构建 Web 应用措施时,你不可是编写单独运行的 JavaScript 代码,你编写的 JavaScript 正在与情形举办交互。相识这种情形,它的事变道理以及它的组,这些有助于你够构建更好的应用措施,并为应用措施宣布后也许呈现的隐藏题目做好充实筹备。 赏识器的

与 HTML一样,渲染引擎必要将 CSS 转换成赏识器可以行使的对象—— CSSOM。CSSOM 布局如下:

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

你想知道为什么 CSSOM 是一个树形布局? 在为页面上的任何工具计较最终样式集时,赏识器以合用于该节点的最通例法则开始(譬喻,假如它是 body 元素的子元素,则应用全部 body 样式),然后递归地细化,通过应用更详细的法则来计较样式。

来看看详细的例子。包括在 body 元素内的 span 标签中的任何文本的字体巨细均为 16 像素,而且为赤色。这些样式是从 body 元素担任而来的。 假如一个 span 元素是一个 p 元素的子元素,那么它的内容就不会被表现,由于它被应用了更详细的样式(display: none)。

另请留意,上面的树不是完备的 CSSOM 树,只表现我们抉择在样式表中包围的样式。 每个赏识器都提供一组默认样式,也称为 “user agent stylesheet” 。这是我们在未明晰指定任何样式时看到的样式,我们的样式会包围这些默认值。

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

差异赏识器对付沟通元素的默认样式并纷歧致,这也是为什么我们在 CSS 的最开始要写 *{padding:0;marging:0}; ,也就是我们要重置CSS默认样式的。

构建渲染树

CSSOM 树和 DOM 树毗连在一路形成一个 render tree,,渲染树用来计较可见元素的机关而且作为将像素渲染到屏幕上的进程的输入。

  • DOM 树和 CSSOM 树毗连在一路形成 render tree .
  • render tree 只包括了用于渲染页面的节点
  • 机关计较了每一个工具的精确的位置以及巨细
  • 绘画是最后一步,绘画要求操作 render tree 来将像素表现到屏幕上

渲染树中的每个节点在 Webkit 中称为渲染器或渲染工具。

收下是上面 DOM 和 CSSOM 树的渲染器树的样子:

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

为了构建渲染树,赏识器大抵执行以下操纵:

  • 从 DOM 树根节点开始,遍历每一个可见的节点

  1. display:none 
  • 对每一个可见的节点,找到吻合的匹配的CSSOM法则,而且应用样式
  • 表现可见节点(节点包罗内容和被计较的样式)

“visibility:hidden” 和 “display:none” 之间的差异, “visibility:hidden” 将元素配置为不行见,可是同样在机关上霸占必然空间(譬喻,它会被渲染成为空盒子),可是 “display:none” 的元素是将节点从整个 render tree 中移除,以是不是机关中的一部门 。

你可以在这里查察 RenderObject 的源代码(在 WebKit 中):

https://github.com/WebKit/web...

我们来看看这个类的一些焦点内容:

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

JavaScript是怎样事变的:渲染引擎和优化其机能的能力

每个渲染器代表一个矩形地区,凡是对应于一个节点的 CSS 盒模子。它包括几许信息,譬喻宽度、高度和位置。

渲染树的机关

建设渲染器并将其添加到树中时,它没有位置和巨细,计较这些值称为机关。

HTML行使基于流的机关模子,这意味着大大都时刻它可以一次性计较几许图形。坐标体系相对付根渲染器,行使左上原点坐标。

机关是一个递归进程 - 它从根渲染器开始,它对应于 HTML 文档的 <html> 元素。 机关以递归方法继承通过部件或整个渲染器条理布局,为每个必要它的渲染器计较几许信息。

根渲染器的位置为 0,0 ,其尺寸与赏识器窗口的可见部门(即viewport)的巨细沟通。开始机关进程意味着给每个节点在屏幕上应该呈现简直切坐标。

绘制渲染树

在此绘制,遍历渲染器树并挪用渲染器的 paint() 要领以在屏幕上表现内容。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读