HTML 解惑 - 浏览器渲染流程

发布于 2023-09-30 18:01:46 字数 1356 浏览 32 评论 0

浏览器如何展示页面的?

一、浏览器工作流程

1、加载

根据请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。

2、解析

对加载到的资源(HTML、JS、CSS 等)进行语法解析,建立相应的内部数据结构(比如 HTML 的 DOM 树,JS 的(对象)属性表,CSS 的样式规则等等)

3、渲染

构建渲染树,对各个元素进行位置计算、样式计算等等,然后根据渲染树对页面进行渲染(可以理解为“画”元素)

这几个过程不是完全孤立的,会有交叉,比如 HTML 加载后就会进行解析,然后拉取 HTML 中指定的 CSS、JS 等。

其中,仅针对浏览器拿到资源后的渲染这一部分,可以包含两部分流程。

二、渲染流程

1、排版

根据文档流,加上浮动、定位等属性,确定各个盒子的位置还有尺寸。

2、绘制

将 css 的属性例如字体、背景色、圆角等等按照给定的方式呈现出来。

注意: 这里涉及到 2 个性能优化的概念:

  1. Repaint:重绘
  2. Reflow:重新渲染

三、性能优化之 Repaint 和 Reflow

1、Repaint

对页面进行重绘,这时候不会更改页面布局,性能变化没那么明显。

比如:修改 font-colortext-align 等修改

2、Reflow

对页面进行重新渲染,这个是要包含 Repaint 。也就是页面布局不仅要重新调整,样式也要重新调整。

对于引发这种重新渲染的情况,主要有:

  • 新增/删除 HTML 节点、修改容器尺寸等
  • 查询一些尺寸,如: clientHeightclientWidth 等,因为计算尺寸的时候要重新渲染一次才能得到结果,这是浏览器的计算原理。

四、参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

硪扪都還晓

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文