浏览器会下载HTML解析页面生成dom数,遇到css标签就开始解析css,这个过程不会阻塞。但是如果遇到了js脚本,此时假如CSSOM还没构建完,需要等待CSSOM构建完,再去执行js脚本,然后再执行dom解析,此时会阻塞。
就是说:js会阻塞dom的生成,而样式文件又会阻塞js的执行。
用如下代码示例来说明:script脚本阻塞了dom的生成,此时CSSOM还没有构建完,需要等待CSSOM构建完,再执行js脚本。
此时dom还没解析完,导致如下代码执行出错(没有查找到该元素)
document.getElementById('son2').style.border = '1px solid gray'
因为CSSOM已构建完,所以son1的边框颜色发生变化了。
效果如下:
<style type="text/css">
.father{
height: 200px;
border: 1px solid red;
display: flex;
padding: 10px 10px;
}
.son1{
width: 50px;
border: 1px solid black;
}
.son2 {
margin-left: 20px;
width: 40px;
min-height: 10px;
border: 1px solid green;
}
</style>
</head>
<body>
<div class="father">
<div class="son1" id="son1"></div>
<script>
let son1 = document.getElementById('son1')
son1.style.border = '1px solid blue'
document.getElementById('son2').style.border = '1px solid gray'
</script>
<div class="son2" id="son2"></div>
</div>
</body>
|