css选择器的优先级

简介:

1. 引言

  选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明。

  

  上图中,css中的两个选择器都是针对<span>的,而且两个设置的颜色不一样,这里的<span>到底听从谁的命令?

  上面还是比较简单的,下面在来一个复杂的:

  

  上图中的<li>该显示成什么颜色呢?

2. 特指度

  要解决以上问题,我们需要引入一个概念——特指度(specificity)。特指度表示一个css选择器表达式的重要程度,可以通过一个公式来计算出一个数值,数越大,越重要。

  这个计算叫做“I-C-E”计算公式,

  1. I——Id;
  2. C——Class;
  3. E——Element;

  即,针对一个css选择器表达式,遇到一个id就往特指度数值中加100,遇到一个class就往特指度数值中加10,遇到一个element就往特指度数值中加1

  下面举几个css表达式的特指度计算结果,大家也自己算一算,是不是对:

CSS选择器表达式

特指度计算结果

p

1

p.large

11

P#large

101

div p#large

102

div p#large ul.list

113

div p#large ul.list li

114

  还有一个重点要注意:!important优先级最高,高于上面一切。* 选择器最低,低于一切。

  好了,你现在可以返回文章一开始提出的两个问题,根据特指度计算公式计算,哪个的计算结果大,浏览器就会以哪个为优先。

3. 简版规则

  如果你嫌上面的计算过于复杂,有一个简版规则。它只有三个规则,这三个规则能覆盖大多数情况,而且比较好记。

  规则一,包含ID的选择器胜过包含Class的选择器,包含Class的选择器胜过包含元素的选择器;例如下图,第一个特指度更高:

  

  规则二,不同选择器的特指度比较时,不区分加载的顺序(相同选择器在层叠时,后加载的覆盖前加载的),例如下图,虽然后加载,但是特指度低:

  

  规则三,设置的样式高于继承的样式,不用考虑特指度。例如:

      

      

  其实,大部分情况下,你通过这个简版的规则,即可判断选择器的优先级。



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5398708.html,如需转载请自行联系原作者

相关文章
|
并行计算 算法 计算机视觉
【MATLAB 】 CEEMD 信号分解+模糊熵(近似熵)算法
【MATLAB 】 CEEMD 信号分解+模糊熵(近似熵)算法
388 0
|
Python
Python3.X使用tkinter报错,完美解决~(Python GUI)No matching distribution found for tkinter
Python3.X使用tkinter报错,完美解决~(Python GUI)No matching distribution found for tkinter
2665 0
Python3.X使用tkinter报错,完美解决~(Python GUI)No matching distribution found for tkinter
测试闭环
一、需求评审 1.需求评审的目的 明确功能优先级,评审业务流程设计的合理性,评估技术可行性。 2.需求评审中注意事项 a)提前了解产品需求,明确核心流程、功能结构 b)评审过程中不避免乏味,时间越长越容易分心,所以先了解重点模块,循序渐进 c)评审中遇到争议点,避免发散讨论,引导大家快速决策,明确沟通,明确产品拍板 d)评审中遇到无法决策的点,记录下来,会后处理,不过多纠缠,后续让产品决策后更新需求文档。
3966 0
|
传感器 存储 安全
智能包装:食品保鲜与追踪的创新
【10月更文挑战第20天】智能包装通过传感器、微电子和物联网技术,实现实时监测和调节食品环境条件,延长食品保鲜期,确保食品安全。本文探讨其基本原理、技术创新、实际应用及未来趋势,展示其在食品行业中的革命性变化。
|
8月前
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
408 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
11月前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
11月前
|
人工智能 安全 物联网
Linux操作系统的演变与未来:从开源精神到万物互联的基石###
本文是关于Linux操作系统的演变、现状与未来的深度探索。Linux,这一基于Unix的开源操作系统,自1991年由林纳斯·托瓦兹(Linus Torvalds)学生时代创造以来,已经彻底改变了我们的数字世界。文章首先追溯了Linux的起源,解析其作为开源项目的独特之处;随后,详细阐述了Linux如何从一个小众项目成长为全球最广泛采用的操作系统之一,特别是在服务器、云计算及嵌入式系统领域的主导地位。此外,文章还探讨了Linux在推动技术创新、促进协作开发模式以及保障信息安全方面的作用,最后展望了Linux在未来技术趋势中的角色,包括物联网、人工智能和量子计算等前沿领域的潜在影响。 ###
|
安全 数据安全/隐私保护 开发者
APP备案须知
随着智能手机普及和移动互联网发展,APP市场规模扩大,企业及开发者需在发布前进行APP备案。中国规定,提供互联网信息服务的APP须按《互联网信息服务管理办法》备案,以规范市场、保护用户权益和维护国家安全。备案流程包括在国家互联网信息办公室系统填写APP信息、提交证件材料,并确保信息真实合法。备案能提升用户信任度,增加APP市场信用,是合法经营和保障用户权益的基础。
550 0
|
Java 测试技术 Maven
[Maven]引入自定义Jar包(在maven仓库找不到的那种)
Maven项目中,使用到了腾讯信鸽,腾讯信鸽JavaSDK中直接封装了一个jar包; 在项目中添加依赖,本地打包也能正常,可是到远程部署的时候就是NotFoundClass错误了; 多次测试思考后,发现maven引入自定...
3082 0
|
移动开发 API
阿里云com域名续费优惠口令「com批量注册更享优惠」
阿里云com域名续费优惠口令「com批量注册更享优惠」,2023年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,com域名注册优惠口令“梦想从域名开始”,cn域名注册优惠口令“互联网上的中国标识”
200 0