关于css层叠

  “确定应当向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源。这个过程就称为层叠。”——《css权威指南》

 

特殊性

内联样式 1,0,0,0
ID 0,1,0,0
类、属性选择、伪类 0,0,1,0
标签、伪元素 0,0,0,1
结合符、通配符 0,0,0,0

 

  

 

 

 

1 html>body table tr[id="totals"] td ul >li {color:maroon;}/*0,0,1,7*/
2 li#answer {color:navy;} /*0,1,0,1 (winner)*/

注:!important 是重要声明,永远比非重要声明优先。

 

继承

  大多数框模型属性(包括外边距、内边距、背景和边框)都不能继承。

  继承的值没有特殊性,连0特殊性(通配符)都没有。

  用户代理的超链接a有默认样式不会继承,如需修改要额外写一个a:link{color:inherit;}覆盖原有蓝色。

demo

1 <style type="text/css">
2     *{color:gray;}
3     #page{color:blue;}
4 </style>
1 <h1 id="page">This is <em>central line.</em></h1>

注:这个demo也说明了不加区别地使用通配选择器会引发的继承问题。

 

 权重和来源

     5级声明权重由大到小顺序依次为:

  1. 读者的重要声明
  2. 创作人员的重要声明
  3. 创作人员的正常声明
  4. 读者的正常声明
  5. 用户代理声明

  如果两个规则的权重、来源和特殊性完全相同,那么后写的胜出。文档中包含的规则权重高于导入的规则(@import)。

    由此,推荐链接样式排序为LVHA(:link,:visited,:hover,:active)。当为同一个属性设置样式(如color),以AHLV的顺序编写就不会有悬停和响应的效果,因为链接会先找到:link而直接忽视AH。当然,如果使用组合伪类(:visited:hover)就不用担心这个问题。

 

层叠规则

  来源>特殊性>声明顺序(主样式表>导入样式表)>继承

 


参考资料

《css权威指南》第3章 结构与层叠 

 

转载于:https://www.cnblogs.com/ssnowy93/p/4225825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值