鉴于定义颜色属性的两类具有相同的特异性,我认为元素类属性中列出的最后一个类优先.
来自http://htmlhelp.com/reference/css/structure.html:
规范顺序为了方便起见,当两个规则具有相同的权重时,指定的最后一个规则获胜.
在下面的真空代码示例中,定义类规则集的顺序决定了优先级.这里最后一个或最近的类规则集定义优先.
<style>
.makeBlue {color: blue;}
.makeGreen {color:green;}
</style>
<div>
<p class="makeGreen makeBlue">makeGreen makeBlue</p>
<p class="makeBlue makeGreen">makeBlue makeGreen</p>
</div>
Run Code Online (Sandbox Code Playgroud)
输出文本为绿色.
如果我交换了类声明的顺序,并首先声明.makeGreen
<style>
.makeGreen {color:green;}
.makeBlue {color: blue;}
</style>
<div>
<p class="makeGreen makeBlue">makeGreen makeBlue</p>
<p class="makeBlue makeGreen">makeBlue makeGreen</p>
</div>
Run Code Online (Sandbox Code Playgroud)
输出文本为蓝色.
我以前从未注意过这一点.编辑我认为编辑元素类属性中列出的最后一个类优先.
编辑 澄清 - >我有时会想到一个元素作为宠物,让我们说一只狗.我看到在元素的class属性中添加一个类作为发出dog命令.如果我告诉它坐下,然后告诉它躺下,我希望狗躺下.我不认为这只狗会保持坐着,因为我教它如何坐下(最近比)我教它如何躺下.
所以...两个问题.
非常感谢!
关于分配有两个或多个类名的HTML 类属性,即
<tag class="a b">....</tag>
Run Code Online (Sandbox Code Playgroud)
我可以用不同的浏览器测试它 - 参见http://jsfiddle.net/PP9yf/1/上的测试或这个问题/答案 - 并推导出常识规则:
使用
class="a"如果它被定义,或者使用class="b",如果它被定义,或者同时使用如果两个定义 ......而且,同时使用时,如果他们分配相同的属性,最后CSS定义覆盖他人.
因此,我们可以解释例如class="a b"必须与之相同class="b a".
但它是W3C官方解释?
哪个W3C标准说这个规则?
PS:我从另一个问题开始,但我的动机是软件开发.我需要这个规范的答案来开发类似于emogrifier等的软件.
示例:CssToInlineStyles需要进行此更正...但只需要"更正",如果有W3C标准并且说软件错误.