页面渲染过程
来源:21-4 页面加载 - 解答
诺巴蒂
2019-10-28
DOM 和 CSSOM 都创建完才会渲染页面,HTML 页面 是从上到下 执行的,如果这过程被 script 脚本阻塞了(一些 dom 或者 link 在这个script 后面),为什么阻塞前的页面渲染了?
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#red {
background: blue
}
</style>
</head>
<body>
<div id='red'>111</div>
<script>
for (let i = 0; i < 1000000; i++) {
console.log(i)
}
</script>
<div>32131231</div>
</body>
</html>
我试了一下,会先出来一个蓝色背景的 111,过了一会儿才出现 32131231,这时候 dom 树应该还没构建完呀,link 标签放到后面(cssom没构建完)也是同样的现象。
网上的参考资料是这样写的,为啥现象不是这样
CSS 的阻塞
我们提到 DOM 和 CSSOM 合力才能构建渲染树。这一点会给性能造成严重影响:默认情况下,CSS 是阻塞的资源。浏览器在构建 CSSOM 的过程中,不会渲染任何已处理的内容。即便 DOM 已经解析完毕了,只要 CSSOM 不 OK,那么渲染这个事情就不 OK(这主要是为了避免没有 CSS 的 HTML 页面丑陋地“裸奔”在用户眼前)。
写回答
1回答
-
双越
2019-10-28
你描述的内容我大概看明白了,就没看懂你的问题是什么。可以重新编辑一下问题,先描述现象,再描述问题。问题可以这样描述:预期是xxx,结果却是yyy。
072019-10-29
相似问题