前端性能优化_css加载会造成哪些阻塞现象?

时间: 2018-01-18阅读: 294标签: css
css的加载是不会阻塞DOM的解析,但是会阻塞DOM的渲染,会阻塞link后面js语句的执行。这是由于浏览器为了防止html页面的重复渲染而降低性能,所以浏览器只会在加载的时候去解析dom树,然后等在css加载完成之后才进行dom的渲染以及执行后面的js语句。这就是造成在css下载完成之前,页面刚开始会出现白屏现象的原因。


浏览器渲染流程:

  1. 浏览器开始解析目标HTML文件,执行流的顺序为自上而下。

  2. HTML解析器将HTML结构转换为基础的DOM(文档对象模型),构建DOM树完成后,触发DomContendLoaded事件。

  3. CSS解析器将CSS解析为CSSOM(层叠样式表对象模型),一棵仅含有样式信息的树。

  4. CSSOM和DOM开始合并构成渲染树,每个节点开始包含具体的样式信息。

  5. 计算渲染树中个各个节点的位置信息,即布局阶段。

  6. 将布局后的渲染树显示到界面上。


根据以上的流程,可以知道,当cssdom还没构建完成时,页面是不会渲染到浏览器界面的,这也是为什么当css下载过慢时,会出现白屏的现象,以下是模拟白屏的例子:

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    <h1>this is a test</h1>
    <link rel="stylesheet" type="text/css" href="test.css">
    <img src="1.jpg">
    <hr>
    <span>this is a test</span>
</body>
</html>

test.css:

img{
    width: 50%;
}

使用fidder延迟css的响应:

if(oSession.uriContains('test.css')){
    oSession["response-trickle-delay"] = "3000";
}


可以看到,在1.4s的时候,html文档和img已经下载完成,但是页面并没有渲染,而是等到css加载完成后再渲染出来,这也证实了css加载过程中会阻塞页面的渲染。所以在我们的前端日常开发中,应尽量减少css的响应时间。


CSS隐藏页面元素常用方法_不同场景下使用CSS隐藏元素

使用 CSS 让元素不可见的方法很多,剪裁、定位到屏幕外、明度变化等都是可以的。虽然它们都是肉眼不可见,但背后却在多个维度上都有差别

CSS 技术技巧_提高你CSS技术的法则

CSS技术技巧法则:不要让你的代码脱离你的掌控,尽量简洁、掌握基础、保持代码的可复用性、面向对象的css、Css3了解他能做的以及你可以使用的部分、渐进增强与优雅降级、Css预处理工具...

CSS隐藏元素的五种方法

用css隐藏页面元素有许多种方法。1、opacity:0;2、visibility:hidden;3、diaplay:none;4、position:absolute;5、clip-path。大家可以根据具体情况选择适合的方法来隐藏元素

初次接触CSS变量

本文的目的主要是展示CSS变量是如何工作的。随着Web应用程序变得越来越大,CSS变得越来越大,越来越多,而且很多时候都很乱,在良好的上下文中使用CSS变量,为您提供重用和轻松更改重复出现的CSS属性的机制。

纯css如何绘制三角形_利用border实现画三角形的原理方法

使用css画三角形,首先想到的思路是:利用border边框样式来实现,这是由于border的边框是由四个三角形组成的。

你知道我们平时在CSS中写的%都是相对于谁吗?

编写CSS的时候,经常会用到百分比赋值(%)实现自适应。像我们最常使用的流式布局设计模式,基本所有的column的宽度都是通过%来取值的。或者比如经常会遇到的元素水平垂直居中问题

CSS中的三大特性_继承性、层叠性、优先级

这是一篇基础的文章,主要介绍css中的三大特性:css继承性、css层叠性、css优先级

CSS中可以和不可以继承的属性

这篇文章整理css中无继承性的属性、继承性的属性、所有元素可以继承的属性、内联元素可以继承的属性、块级元素可以继承的属性

web前端开发书籍推荐_css/css3的好书有哪些?

css/css3样式已是web前端开发的主流技术了。每个优秀的前端程序员都应该熟悉,甚至精通css。那么要如何才能学好css,并很好的应用到实际开发中,这篇文章就推荐一些关于css相关的书籍给大家。

CSS3 clip-path 用法介绍

clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的URL定义的路径或者外部svg的路径,或者作为一个形状例如circle().。clip-path属性代替了现在已经弃用的剪切 clip属性。