css性能

124 阅读2分钟
加载性能
这个方面相关的 best practice 太多了,
比如不要用 import 啊,压缩啊等等,主要是从减少文件体积、减少阻塞加载、提高并发方面入手的,
任何 hint 都逃不出这几个大方向。
渲染性能
渲染性能是 CSS 优化最重要的关注对象。
页面渲染 junky 过多?
看看是不是大量使用了 text-shadow?是不是开了字体抗锯齿?
CSS 动画怎么实现的?合理利用 GPU 加速了吗?
这个方面搜索一下 CSS render performance 或者 CSS animation performance 也会有一堆一堆的资料可供参考。

避免使用@import
外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟。
一个CSS文件first.css包含了以下内容:@import url(“second.css”)。
浏览器先把first.css下载、解析和执行后,发现及处理第二个文件second.css。
简单的 解决方法是使用<link>标记来替代@import,并行下载CSS文件,从而加快页面加载速度.

避免通配选择器
在学习CSS初期,我们在做网页的时候经常会使用*{margin:0;padding:0;},以此来消除标签的默认布局和不同浏览器对于同一个标签的渲染。
而我们有时候会看到reset的写法。body,p,h1,h2,h3,h4,h5,input,select,textarea,table{margin:0;padding:0;}
这些人为什么要这么写,下面的内容我们会得到答案
例:#header > a {font-weight:blod;}
CSS选择器是从右到左进行规则匹配。所以在浏览器中这条语句实现为:
浏览器遍历页面中所有的a元素——>其父元素的id是否为header。
例:#header  a {font-weight:blod;}
这个例子比上一个消耗的时间更多
遍历页面中所有a元素——>向其上级遍历直到根节点
例:.selected * {color: red;}
匹配文档中所有的元素——>分别向上逐级匹配class为selected的元素,直到文档的根节点
所以我们应该避免使用通配选择器。

避免类正则的属性选择器
正则表达式匹配会比基于类别的匹配会慢很多。大部分情况下我们应尽量避免使用 *=, |=, ^=, $=, 和 ~=语法的属性选择器。

移除无匹配的样式

避免单规则的属性选择器
浏览器匹配