css加载会造成阻塞吗

2021-06-30  本文已影响0人  A_dfa4

结论:

  1. css不会阻塞js的解析
  2. css会阻塞js的渲染
  3. css会阻塞js的执行
  4. 如果页面中同时存在css和js,并且存在js在css后面则DOMContentLoaded会在css加载完后执行
    其他情况下 DOMContentLoaded 都不会等待css执行
<!--<!DOCTYPE html>-->
<!--<html lang="en">-->
<!--<head>-->
<!--  <title>css阻塞</title>-->
<!--  <meta charset="UTF-8">-->
<!--  <meta name="viewport" content="width=device-width, initial-scale=1">-->
<!--  <style>-->
<!--    h1 {-->
<!--      color: red !important-->
<!--    }-->
<!--  </style>-->
<!--  <script>-->
<!--    function h () {-->
<!--      console.log(document.querySelectorAll('h1'))-->
<!--    }-->
<!--    setTimeout(h, 0)-->
<!--  </script>-->
<!--  <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">-->
<!--</head>-->
<!--<body>-->
<!--<h1 style="color: #00a854">这是红色的</h1>-->
<!--</body>-->
<!--</html>-->
<!--dom 执行 解析  -> 渲染-->
<!--
  1. 页面先打印 既 执行了 解析
  2. 打印了dom 页面没加载出来 既 渲染没执行
  总结: 1. css不会阻塞js的解析 2.css会阻塞js的渲染
  -->

<!--<!DOCTYPE html>-->
<!--<html lang="en">-->
<!--<head>-->
<!--  <title>css加载会阻塞js运行吗?</title>-->
<!--  <meta charset="UTF-8">-->
<!--  <meta name="viewport" content="width=device-width, initial-scale=1">-->
<!--  <script>-->
<!--    console.log('before css')-->
<!--    var startDate = new Date()-->
<!--  </script>-->
<!--  <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">-->
<!--</head>-->
<!--<body>-->
<!--<h1>这是红色的</h1>-->
<!--<script>-->
<!--  var endDate = new Date()-->
<!--  console.log('after css')-->
<!--  console.log('经过了' + (endDate -startDate) + 'ms')-->
<!--</script>-->
<!--</body>-->
<!--</html>-->

<!--20kb网络经过了9503ms -->
<!--总结:css会阻塞js的执行-->

<!DOCTYPE html>
<html lang="en">
<head>
  <title>css阻塞</title>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      console.log('DOMContentLoaded');
    })
  </script>
  <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">
  <h6>www</h6>
  <script>
    console.log("后面的");
  </script>
</head>
<body>
</body>
</html>
<!--如果js在css前面 DOMContentLoaded 不会被css加载影响 -->
如果页面中同时存在css和js,并且存在js在css后面,则DOMContentLoaded事件会在css加载完后才执行。
其他情况下,DOMContentLoaded都不会等待css加载,并且DOMContentLoaded事件也不会等待图片、视频等其他资源加载。
<!--
如果页面中同时存在css和js,并且存在js在css后面则DOMContentLoaded会在css加载完后执行
其他情况下 DOMContentLoaded 都不会等待css执行
-->


<!--大总结:
1. css不会阻塞js的解析
2. css会阻塞js的渲染
3. css会阻塞js的执行
4. 如果页面中同时存在css和js,并且存在js在css后面则DOMContentLoaded会在css加载完后执行
   其他情况下 DOMContentLoaded 都不会等待css执行
-->



上一篇 下一篇

猜你喜欢

热点阅读