<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>分组选择符</title>
<style type="text/css">
h1,span{color:red;}
.first,#second span{color:green;}
</style>
</head>
<body>
<h1>勇气</h1>
<p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
<p id="second">到了三年级下学期时,我们班上了一节公开课,老师提出了一个很<span>简单</span>的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:"我来,我来。"我环顾了四周,就我没有举手。</p>
<img src="http://img.mukewang.com/52b4113500018cf102000200.jpg" >
</body>
</html>
这是因为权值才会这样的,上面的代码可以改为h1{color :red;}
span{color :red;}
.first{color:green;}
#second{ color:green;}
.first的权值为10,但对于它<span>胆小如鼠</span>这个<span>标签来说,<span>标签继承了.first,继承的权值最低为0.1。 span{ color :red;}的权值为1。权值1>0.1,所以优先执行span{}语句,所以胆小如鼠为红的。
详情见9-2的特殊性
《CSS权威指南》第三版里面有特别提到这个问题
这里涉及到继承的特殊性问题,如果使用.first,#second span{color:green;},<span>的声明一共有两条,一条继承来自.first,字体颜色应该为绿色,但是继承的特殊性为0;第二条来自<span>{color:red;},特殊性为1。第二条的特殊性大于第一条,所以显示为红色
h1,span{color:red;}
.first,#second span{color:green;}
第二段代码应当是并列关系,只是将second下面的span和first同时被定义成了绿色,而first下面的span并没有被定义,所以优先采用了第一段代码显示红色。
如果改成.first span,#second span{color:green;}的话胆小如鼠就变绿色了,但整段代码仍旧是黑色不变,因为只指定了first下的span,而没有指定整个first。
我是这样理解的,不知道对不对。
两个同为分组选择器,优先级别应该是同等的,只是修饰的内容不同,元素不一样。
同问此问题
达到目的就行,什么优先级。。。