浏览器渲染

2017-08-02  本文已影响0人  peaceChierdo

1. CSS和JS在网页中的放置顺序是怎样的?

  • 浏览器对于图片和CSS,在加载时会并发加载(比如一个域名下同时加载两个文件)
  • 浏览器对于JavaScript,在加载时会禁用并发,并且阻止其后的文件的加载及组件的下载。
<head>
<link rel="stylesheet" href="index.css">
.....
</head>
<body>
...
<script src="index.js"></script>
</body>

2. 解释白屏和FOUC

  • 白屏
    • 因为浏览器的渲染引擎在获得内容后的工作流程是逐步进行的,大多数浏览器(IE、chrome)是等样式加载再绘制给用户看。所以当css样式表放在html底部时,解析加载过程中会出现白屏现象,等浏览器解析完成才会显示页面。
    • 如果使用@import标签,即使css放在link,并且放在头部,也可能出现白屏。(@import引用的CSS会等到页面全部被下载完再被加载)
    • 由于JS会阻塞后面内容的呈现和组件的下载(加载JavaScript时会禁用并发),所以若将JavaScript放在顶部页会导致白屏。
  • FOUC
    即Flash of Unstyled Content。
    指的是逐步加载无样式的内容,等CSS加载完成后页面突然展现的样子。也就是说,浏览器加载了无样式内容,又突然解析到了样式,会对页面进行重新的渲染,这时候就会产生FOUC现象。在IE浏览器中,如果把样式放在底部,某些场景下(点击链接、输入URL、使用书签进入等等),就会出现FOUC现象。对于 Firefox 则会一直表现出 FOUC。

3. async和defer的作用是什么?有什么区别

4. 简述网页的渲染机制

  1. 解析HTML标签,构建DOM树。
  2. 解析CSS标签,构建CSSOM树。
  3. 把DOM和CSSOM组合成渲染树(render tree)。
  4. 在渲染树的基础上进行布局,计算每个节点的几何结构。
  5. 把每个节点绘制到屏幕上(painting)。
webkitflow.png
上一篇 下一篇

猜你喜欢

热点阅读