css选择符的性能

大部分情况下,大家都关注js性能,那么css性能又如何呢?

针对css的性能,有一些最佳实践:

1、把样式表放在文档head标签中

2、不要在ie中使用css表达式

3、避免使用过多的行内样式


浏览器尝试把css选择符和文档中的元素匹配起来,css选择符的编写方式决定了浏览器必须执行的匹配次数,某些选择符会导致浏览器尝试更多匹配,因此开销比简单选择符更高。

下面介绍css选择符大致按照最简单(最小开销)到最复杂(最大开销)顺序列出:


1、ID选择符:  #top{}

2、类选择符:.top{}

3、类型选择符:a{}

4、相邻兄弟选择符:h1 + #top{}

5、子选择符 #top > a

6、后代选择符: #top a{}

7、通配选择符 :*{}

8、属性选择符:[href="#index"] {}

9、伪类和伪元素:a:hover{}


看如下规则:

#top a{}

多数人可能猜想浏览器是从左到右匹配规则,因此推测这条规则开销不高,因为页面中有唯一的#top,然后去匹配几个a,所以这样的选择符应该是相当高效的。事实上,CSS选择符是从右到左进行匹配 ,浏览器从右开始,遍历文档中所有的a,然后匹配每个链接的父节点和文档树去查找 a 的祖先元素是否id 为top。

那么如何编写高效的css选择符,下面是一些实践指南:

1、避免使用通配规则

2、不要限定id选择符

在页面中一个ID只能对应一个元素,所以类似 div#top是没有必要的,应简化为#top

3、不要限定类选择符

例如把 li.chapter  改成  .li-chapter 会更好

4、不要试图编写 #top ul li a{} 这样的长选择符,最好创建一个 .list{} 这样的类选择符并把它添加到适当的元素上

5、避免使用后台选择符

6、避免使用子选择符

7、质疑子选择符的用途

检查所有子选择符,然后尽可能用具体的类取代他们

8、依靠继承


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值