`
redalx
  • 浏览: 181923 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

详解CSS的优先权

阅读更多
发现很多朋友对 CSS 的优先权不甚了解,规则很简单。需要说明的一点,如果你的样式管理需要深层判断 CSS 的优先权,更应反思自己的 CSS 代码,是否合理?是否优化?

CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。

Specificity 具体的计算规则:

元素的 style 样式属性,加 1,0,0,0。
每个 ID 选择符(#id),加 0,1,0,0。
每个 class 选择符(.class)、每个属性选择符(例 [attr=”"] )、每个伪类(例 :hover),加 0,0,1,0。
每个元素或伪元素(例 :firstchild)等,加 0,0,0,1。
其他选择符(例 全局选择符 *,子选择符 >),加 0,0,0,0。
最后逐位相加数字串,得到最终的 Specificity 值,按照从左到右的顺序逐位比较。

除了 Specificity 还有一些其他规则:

!important 声明的规则高于一切,如果 !important 声明冲突,则比较优先权。
如果优先权一样,则按源码中“后来者居上”的原则。
由继承而得到的样式属性不参与 specificity 的计算,低于一切其他规则(例 全局选择符 * )。
范例分析:

h1 {color: red;}
/* 只有一个普通元素加成,结果是 0,0,0,1 */
body h1 {color: green;}
/* 两个普通元素加成,结果是 0,0,0,2 */
/*0,0,0,1 小于 0,0,0,2 ,后者胜出*/
h2.grape {color: purple;}
/* 一个普通元素、一个class选择符加成,结果是 0,0,1,1*/
h2 {color: silver;}
/*一个普通元素,结果是 0,0,0,1 */
/*0,0,1,1 大于 0,0,0,1 ,前者胜出*/
html > body table tr[id=”totals”] td ul > li {color: maroon;}
/* 7个普通元素、一个属性选择符、两个其他选择符(子选择符 >),结果是0,0,1,7 */
li#answer {color: navy;}
/* 一个ID选择符,一个普通选择符,结果是0,1,0,1 */
/*0,0,1,7 小于 0,1,0,1,后者胜出*/

分享到:
评论

相关推荐

    CSS网站布局实录 (第二版)PDF版

    2.9 样式优先权问题 2.9.1 写法优先权 2.9.2 选择符优先权 2.9.3 样式继承 2.9.4 !important语法 2.10 代码注释 2.11 CSS开发环境与调试环境 第3章 CSS网页布局与定位 3.1 认识div 3.1.1 div是什么 3.1.2 如何使用...

    LEARNING NOTE

    **优先权**是指当多个CSS规则应用于同一个元素时,某些规则可能比其他规则具有更高的优先级。CSS的优先权主要受以下因素影响: - **源顺序**:内联样式 > 内部样式表 > 外部样式表 - **特异性**:选择器的特异性越...

    JavaScript中DOM详解.docx

    - 使用CSS优先于直接操作样式属性,以保持代码整洁和性能高效。 6. **局部变量与全局变量**: - 在函数内部声明局部变量可以提高访问速度,减少全局变量的使用。 7. **定时器的使用**: - 需要周期执行任务时,...

    VIP客户管理系统

    2. 优先权管理:VIP客户在新品预览、限量款购买等方面享有优先权。 3. 积分兑换:购物可累积积分,用于兑换精美礼品或抵扣现金。 4. 会员活动:定期举办VIP专享活动,如新品发布会、时尚沙龙等,增强客户体验。 三...

    Java会议室预定系统

    在十五个用户之间实现公平的预定策略,可能涉及到权限管理,比如高级用户可能有优先预定权或者可以预定更多的时间段。同时,系统需要具备用户账户管理功能,包括注册、登录、密码修改等,确保用户数据的安全性。 ...

    ssm+bootrstrap项目

    【SSM+Bootstrap项目详解】 SSM框架是Java Web开发中的一个流行组合,由Spring、Struts和MyBatis三个开源框架集成。Spring提供依赖注入(DI)和面向切面编程(AOP),Struts处理HTTP请求并实现MVC模式,而MyBatis则...

    nginx+haproxy.docx

    - **权重(Weight)**:根据服务器性能的不同,为每个服务器分配不同的权重值,从而实现更合理的负载分担。 - **IP Hash**:通过计算客户端IP地址的哈希值来决定请求的转发目标,确保来自同一客户端的请求始终发送到...

    DijkstraMethod:这是一个大学项目,说明了Dijkstra解析方法的工作

    **Dijkstra算法详解** Dijkstra算法,由荷兰计算机科学家艾兹格·迪科斯彻(Edsger W. Dijkstra)于1956年提出,是一种用于寻找图中两点间最短路径的经典算法。在JavaScript编程语言中,我们可以利用这个算法解决...

    用wordpress制作网站的步骤

    【WordPress 制作网站步骤详解】 WordPress 是一种流行的开源内容管理系统,用于构建各种类型的网站,包括个人博客、企业官网和电子商务平台。以下是使用 WordPress 制作网站的基本步骤: 1. **购买域名和空间** ...

    Zig.it-crx插件

    它倡导的隐私优先理念,对于维护互联网时代的个人隐私权具有重要意义。无论你是日常上网还是处理敏感信息,Zig.it-crx都是一个值得信赖的选择。安装这款插件,意味着你选择了一种更加自主、可控的互联网生活方式,让...

    Stemsurfer-crx插件

    **Stemsurfer-crx插件详解** Stemsurfer是一款专为Nederlands(荷兰语)用户设计的浏览器扩展程序。它通过分析用户的在线浏览数据来提供更丰富的信息体验。这款插件的核心功能在于其数据处理能力,能够深度挖掘用户...

    jQuery权威指南-源代码

    10.1.1 优先使用ID与标记选择器/313 10.1.2 使用jQuery对象缓存/314 10.1.3 给选择器一个上下文/315 10.2 处理选择器中的不规范元素标志/317 10.2.1 选择器中含有特殊符号/317 10.2.2 选择器中含有空格符号/...

Global site tag (gtag.js) - Google Analytics