专栏名称: 前端大全
分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯
目录
相关文章推荐
APPSO  ·  曝 iPhone SE 4 ... ·  7 小时前  
小众软件  ·  另外两件事[250206] ·  22 小时前  
小众软件  ·  本地不联网安装 Windows ... ·  2 天前  
APPSO  ·  DeepSeek 刷屏一周后,我想写一篇 ... ·  3 天前  
51好读  ›  专栏  ›  前端大全

CSS加载会造成堵塞吗?

前端大全  · 公众号  ·  · 2024-05-23 11:50

正文

1. 配置浏览器网络速度

首先配置浏览器网络速度,使现象更明显。

1. 打开chrome控制台(按下F12),选择No Throttling,并在Custom中选择Add

2. 对浏览器上传与下载速度进行限制

2. CSS加载不会堵塞DOM的解析,但会堵塞DOM的渲染

<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>这是红色的h1>  body>html>

效果:在CSS加载时,JS就能获取到DOM节点,说明CSS加载不会堵塞DOM的解析

使用Performance进行分析:可以看到在css加载完成后,DOM渲染才完成,说明CSS加载会堵塞DOM渲染(CSS加载完成前,页面白屏)

1. Load:在所有依赖资源加载完触发

2. LCP(largest contentful Paint):页面最大内容渲染时间

3. FP(First Paint):第一个像素渲染到屏幕上的时间

4. FCP(First Contentful Paint):渲染出第一个内容。内容可以是文本、图片

3. 原理分析

从图中可知,Chrome浏览器渲染流程如下:

1.解析HTML,生成DOM树

2.解析CSS,生成CSS规则树

3.合并DOM树和CSS规则树,生成渲染树

4.布局

5.绘制

从流程可以看出来,DOM解析和CSS解析是两个并行的过程,因此 CSS加载不会堵塞DOM的解析 。但渲染树依赖CSS规则树,因此 CSS加载会堵塞DOM的渲染

4. CSS加载不会堵塞JS加载

<html lang="en">  <head>    <title>css阻塞title>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet">  head>  <body>    <h1>这是红色的h1>    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js">script>  body>html>

css的请求结果:开始时间18.96ms

JS的请求结果:开始时间20.45ms

开始时间两者相差不大,并且从Time列动态加载时间可以看出,加载CSS的同时,JS也在加载

结论:CSS加载不会堵塞JS的加载

5. CSS加载会堵塞JS运行

<html lang="en">  <head>    <title>css阻塞title>    <meta






请到「今天看啥」查看全文