CSS选择器优先级与效率优化

Date: 7th of Aug, 2015

Author: HaoyCn

本文收集网上各处关于CSS选择器的文章总结,并自己归纳一篇。

各类选择器的优先级

  1. important声明 1,0,0,0
  2. ID选择器 0,1,0,0
  3. 类选择器 0,0,1,0
  4. 伪类选择器 0,0,1,0
  5. 属性选择器 0,0,1,0
  6. 标签选择器 0,0,0,1
  7. 伪元素选择器 0,0,0,1
  8. 通配符选择器 0,0,0,0

在上面的选择器中,此外,经测试

属性选择器 = 伪类选择器(应用最后一个)

:last-child{color:red;}
[desc]{color:green;}

伪类选择器 > 相邻选择器

:last-child{color:green;}
p ~ p{color:blue;}

相邻选择器 = 子选择器 = 后代选择器(应用最后一个)

p~p{color:red;}
body p{color:blue;}
body > p{color:green;}

后代选择器 > 标签选择器

p ~ p{color:blue;}
p{color:green;}

样式位置的影响

  1. <style></style><link /> 同级,应用取决于<style>标签和<link /> 标签的先后顺序

  2. 元素style=""属性的优先级高于以上两种样式

  3. !important 优先级高于以上两种样式

备注

!important 在IE6中的BUG:在同一组CSS属性中, !important不起作用。如:

#selector{color:blue !important;color:green;}

选择器效率

读取选择器的原则是从右到左。因此,我们书写的右边的最后一个选择器,被称作关键选择器,对于效率有决定性影响。

以下效率排行由 @Steve Souders 提供。

  1. ID选择器
  2. 类选择器
  3. 标签选择器
  4. 相邻选择器
  5. 子选择器
  6. 后代选择器
  7. 通配符选择器
  8. 属性选择器
  9. 伪类选择器

优先级高的不一定效率高

举个例子:#id .classdiv#id p.class

前者效率高于后者,而后者优先级高于前者。我们需要在效率与优先级之间平衡取舍。

优化建议

以下网址提供了诸多建议:

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficie...

扼要摘其精要总结如下:

  1. 避免使用通配符

  2. 不使用标签名或类名修饰ID规则:如果规则使用ID选择器作为关键选择器,不要给规则添加标签名。因为ID本身就是唯一的,添加标签名会不必要地降低匹配效率。

  3. 不使用标签名修饰类:相较于标签,类更具独特性。

  4. 尽量选择最具体的方式:造成低效的最简单粗暴的原因就是在标签上使用太多规则。给元素添加类可以更快细分到类方式,可以减少规则去匹配标签的时间。

  5. 关于后代选择器和子选择器:避免使用后代选择器,非要用的话建议用子选择器代替,但子选择器也要慎用,标签规则永远不要包含子选择器。

  6. 利用可继承性:没必要在一般内容上声明样式。

CSS 选择器优先级与效率优化相关推荐

  1. 谁动了我的选择器?深入理解CSS选择器优先级

    深入理解CSS选择器优先级

  2. css选择器优先级和photoshop快捷键以及100度享乐网框架

    css选择器优先级 CSS选择器的优先级:作用的元素一样,样式一样,就会有优先级问题,当优先级相同时,一旦发生重叠,以样式后面为主 CSS选择器:统配选择器,类选择器,标签选择器,id选择器,后代选择 ...

  3. html5选择器优先级,css选择器优先级怎么比较

    css选择器优先级怎么比较 CSS选择器中比较常见的有标签选择器.ID选择器.类选择器以及子选择器.而事实上,CSS选择器如果细分下来,竟然多达40多种.那他们的优先级该怎么比较呢,下面就来看看吧. ...

  4. css选择器优先级深入理解

    css基础选择器有标签选择器.类选择器.id选择器.通用选择器,本文将深入介绍css选择器优先级,这会给正在解决优先级问题的朋友,带来些许帮助 一.基础选择器  css基础选择器有标签选择器.类选择器 ...

  5. css选择器优先级顺序是什么?css基本选择器优先级的介绍

    css的选择器有很多种,那么,自然而然的就会有优先级这一概念出现,所以,css选择器优先级顺序是怎样的呢?本篇文章将来给大家介绍css选择器优先级的排序,话不多说,我们来直接看正文内容. 打造全网we ...

  6. css选择器优先级问题

    css选择器优先级问题(选择器的权重图) A.为啥有此问题的产生? a.众所周知,css对于同一属性先进行优先级别的判断,若比之前渲染的优先级别高,那么就会渲染成这个优先级别较高的. b.对于单一的选 ...

  7. css选择器优先级及,CSS选择器优先级(转)

    1. 引言 上一节<css知多少(5)--选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对的,而且两个设置的颜色不一 ...

  8. CSS选择器优先级详解

    1. 优先级分级 按照优先级从高到低排列: 1. ! important .foo{color:red !important } !important是顶级优先级,唯一推荐使用它的场景为忽略JS脚本设 ...

  9. html5css选择器优先级,CSS选择器优先级[重要]

    CSS选择器优先级 浏览器是通过判断CSS优先级,来决定到底哪些属性值是与元素最为相关的,从而作用到该元素上.CSS选择器的合理组成规则决定了优先级,我们也常常用选择器优先级来合理控制元素达到我们理想 ...

最新文章

  1. 魅族 虚拟位置服务状态:未运行_神车道具送不停 魅族17x跑跑卡丁车礼盒开启预约...
  2. 软定时器的原理与创建
  3. TortoiseSVN使用方法
  4. 用Gogland开发Go程序
  5. 【C#桌面应用】第一节:使用C#开发桌面应用的准备
  6. git submodule 子模块的管理和使用
  7. python上下文管理关键字_理解 Python 的上下文管理器
  8. jdk和jre和jvm区别_JDK,JRE和JVM之间的区别
  9. frame边框阴影html,CSS阴影效果的比较之drop-Shadow与box-Shadow
  10. web开发中实现页面记忆的几种方式
  11. 大风起兮云飞扬 —记2011年的中国云计算
  12. 学习php开发难吗,PHP开发自学难吗,PHP自学要多长时间?
  13. PTV Vissim学习
  14. bvs是什么意思_股票b和s是什么意思,区别原来这么简单
  15. 一款发动机爆震检测分析仪解决方案:英国 phormula 爆震检测分析仪+PICO
  16. 10 条关于 2018 年软件开发的预测,不仅仅是区块链……
  17. 数组是“二等公民”的话题
  18. 网络安全行业需要工匠精神吗?
  19. LTE下行物理层传输机制(1)-天线端口Antenna Port和小区特定参考信号CRS
  20. 数据仓库之建模过程之业务调研

热门文章

  1. AI:PR的数学表示-传统方法PR
  2. html5手机端设置date,H5 input[type='date'] 优化 pc端和移动端的使用
  3. java util包类_java.util包下的类及常用方法
  4. windowskb2685811补丁_KB898461补丁
  5. AI制作icon标准参考线与多面板复制
  6. spring 整合 mybatis 中数据源的几种配置方式
  7. ***是如何能破解诸如美国中情局之类的密码
  8. cannot resolve symbol ‘springframework‘
  9. python中@wraps的作用
  10. matlab正余弦画心形图案