css权威指南(3):结构和层叠

 特殊性

  上一章介绍了用不同的选择器选择元素,假设一个元素可以用两个或多个规则选择,每个规则都有自己的选择器,那应该应用哪一个选择器呢?

  显然每一对规则只能有一个胜出.应该选哪个呢?答案就在每个选择器的特殊性,对于每个规则,用户代理会计算选择器的特殊性,并将这个特殊性附加到规则中的各个声明.如果一个元素有两个或多个冲突的属性声明,那么有最高特殊性的声明就会胜出.

选择器的特殊性由选择器本身的组件确定,特殊性值表述为4个部分,比如0,0,0,0.一个选择器的具体特殊性如下确定:

1.对于选择器中给定的各个ID属性值,加1,0,0,0;

2.对于选择器中给定的各个类属性值、属性选择或伪类,加0,0,1,0;

3.对于选择器中给定的各个元素和伪元素,加0,0,0,1

4.结合符和通配选择器对特殊性没有贡献.其特殊性为0,0,0,0

5.每个内联声明的特殊性都是1,0,0,0


  要注意的是,当在一个样式声明中使用一个!important 规则时,此声明将覆盖任何其他声明。虽然技术上!important与特殊性无关,但它与它直接相关。


继承

所谓继承,指样式不光应用到指定元素,还会应用到后代元素,值得注意的点如下:

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

2.继承的值没有特殊性,甚至连0特殊性都没有.

<h1 class="page">
		juzipchy
		<em>jin</em>
</h1>

由此可见,通配选择器优先于继承值.


层叠

假如特殊性相等的两个规则同时应用到同一个元素会如何显示?显示规则如下:

1.按显示权重对应到该元素的所有声明排序.标有!important的规则权重高于没有标!important的规则

2.按特殊性对应到给定元素的所有声明排序.有较高特殊性的元素权重大于有较低特殊性的元素.

3.按出现顺序对应到给定元素的所有声明排序.一个声明在样式表或文档中越往后权重越大.


值得注意的是,上章讲了伪类,我们推荐的链接样式顺序是按link-visited-hover-active(LVHA)的顺序,

		a:link{
			color: blue;
		}
		a:visited{
			color: purple;
		}
		a:hover{
			color: red;
		}
		a:active{
			color: orange;
		}

因为这些选择器的特殊性是一样的,按显示顺序里决定最后显示的样式是什么.

  如忽略这种循序,而是按字母顺序排列链接样式

		a:active{
			color: orange;
		}
		a:hover{
			color: red;
		}
		a:link{
			color: blue;
		}
		a:visited{
			color: purple;
		}
   :hover和:active样式失效,因为:link和:visited规则后出现,所有链接要么是已访问,要么是未访问,所以 :link和:visited样式总是覆盖:hover和:active.



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值