浏览器渲染机制

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

css样式放在head中。js放置在body标签内的最后

2 解释白屏和FOUC

一个是没准备好前啥都不出来等会一起出来,一个是先出来html,等一会儿才出来css样式,所以白屏是无法避免的,无论放到哪儿都会一起出来,而无样式闪烁是可以避免的

下面感觉没用,不用看了

白屏:(1)我门使用@import(),属性的时候也可能导致浏览器渲染不及时,(2)又或者我们把标签放在了body的底部位置,都可能导致不及时的现象.(3)因为脚本会阻塞后面内容的呈现和其后组件的下载

FOUC其实是(1)FireFox的渲染逻辑和Chrome的不太一样,一开始Chrome是等待渲染树和位置计算好才会出来网页的内容,但到了FireFox每加载一次dom树就会重绘一次网页样式,一直到所有内容完成为止,所以会一直出现
(2)把样式放在底部,对于IE浏览器,在某些场景下(点击链接,输入URL,使用书签进入等),会出现FOUC现象

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

没有async和defer,浏览器会立即加载并执行js代码,不会等文档元素加载完

  • 有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步).
  • 有 defer,如果给script标签添加了defer属性,即使js放在head里面,它也会在HTML页面解析完毕之后再执行,也就是类似于把这个js放在了页面底部。简单来说就是等页面的html和css加载完毕之后再加载js

4简述网页的渲染机制

①解析HTML标签, 构建DOM树
②解析CSS标签, 构建CSSOM树
③把DOM和CSSOM组合成 渲染树(render tree)
④在渲染树的基础上进行布局, 计算每个节点的几何结构
⑤把每个节点绘制到屏幕上(painting)

投稿

你可能感兴趣的:(浏览器渲染机制)