相关疑难解决方法(0)

定义颜色属性的多个类的优先级由声明顺序而不是规范顺序设置

鉴于定义颜色属性的两类具有相同的特异性,我认为元素类属性中列出的最后一个类优先.

来自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命令.如果我告诉它坐下,然后告诉它躺下,我希望狗躺下.我不认为这只狗会保持坐着,因为我教它如何坐下(最近比)我教它如何躺下.

所以...两个问题.

  1. 这是怎么回事?回答
  2. 如果是这样......为什么?我无法看到必须挖掘类声明以确定哪一个在另一个之前声明的优点.

非常感谢!

css css-specificity

21
推荐指数
1
解决办法
8428
查看次数

如何在CSS渲染中解释HTML多个类名?W3C怎么说呢?

关于分配有两个或多个类名的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标准并且说软件错误.

html css

2
推荐指数
1
解决办法
1932
查看次数

标签 统计

css ×2

css-specificity ×1

html ×1