打开页面时浏览器渲染页面的过程

1、以HTML页面为例描述HTML页面渲染的过程 1) 用户输入网址,浏览器向服务器发出请求,服务器返回HTML文件;  2) 浏览器开始载入HTML代码,若<head>标签内有一个<link>标签引...
1、以HTML页面为例描述HTML页面渲染的过程


1) 用户输入网址,浏览器向服务器发出请求,服务器返回HTML文件; 


2) 浏览器开始载入HTML代码,若<head>标签内有一个<link>标签引用外部CSS文件,则浏览器又发出CSS文件的请求。解析过程中,停止页面所有往下元素的下载,阻塞加载;解析完成后,服务器返回CSS文件(注意:CSS是并行下载的,当所有样式表都下载完成以后页面才开始一起解析CSS文件开始渲染文件。CSS中如有重定义,后定义函数将覆盖前定义函数);


3) 浏览器继续载入HTML中<body>部分的代码,CSS文件已经到手后,可以开始渲染页面了; 


4) 浏览器发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码; 


5) 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要重新渲染这部分代码; 


6) 浏览器发现了一个<script>标签,运行其中的代码,JavaScript脚本执行某条语句,可能会使得页面突然多了或少了某些元素,浏览器不得不重新渲染这部分代码(注意:如果有多个JS文件被引入,那么对于浏览器来说,这些JS文件被被串行地载入,并依次执行。解析过程中,停止页面所有往下元素的下载,阻塞加载。因为JavaScript可能会来操作HTML文档的DOM树,所以,浏览器一般都不会像并行下载CSS文件并行下载JS文件,因为这是JS文件的特殊性造成的。因为浏览器的加载是从上到下一行一行的加载的,所以CSS中如有重定义,后定义函数将覆盖前定义函数);


7) 若用户点了“换肤”按钮,JavaScript让浏览器换了一下<link>标签的CSS路径,则浏览器向服务器请求了新的CSS文件,重新渲染页面。


 


2、重绘和重排(repaints and reflows)


任何对渲染树的修改都有可能会导致下面两种操作:


1) 重排


渲染树的一部分必须要更新且节点的尺寸发生了变化,会触发重排操作。每个页面至少在初始化的时候会有一次重排操作。


2) 重绘


部分节点需要更新,但没有改变其形状,如改变了背景颜色,会触发重绘操作。


 


3、会触发重绘或重排的操作


1) 增加或删除DOM节点。


2) 设置 display: none;(重排并重绘) 或者 visibility: hidden(只有重排)。


3) 移动页面中的元素。


4) 增加或者修改样式。


5) 改变窗口大小,滚动页面等。

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
廖雪
廖雪

78 篇文章

作家榜 »

  1. admin 651 文章
  2. 粪斗 185 文章
  3. 王凯 92 文章
  4. 廖雪 78 文章
  5. 牟雪峰 12 文章
  6. 李沁雪 9 文章
  7. 全易 2 文章
  8. Garmcrypto7undop 0 文章