嵌入样式何时优先于链接样式或导入样式



我使用CSS已经有一段时间了,但从未理解级联是如何工作的。我已经开始学习它,并正在阅读https://www.w3.org/TR/css-cascade-3/#cascading我从规范中了解到级联是一个解决冲突样式的三步过程。

步骤1:根据来源和重要性对规则进行排序[各种来源的优先级按降序排列]:

  1. 转换声明[css-transitions-1]

  2. 重要用户代理声明

  3. 重要用户声明

  4. 重要作者声明

  5. 动画声明[cs-animations-1]

  6. 正常作者声明

  7. 正常用户声明

  8. 正常用户代理声明

此列表中较早来源的声明胜过较晚来源的声明。如果仍然存在冲突,则转至步骤2

第二步:根据具体情况进行排序。如果仍然存在冲突步骤3

步骤3:根据样式源顺序进行排序。

我还在读课本。这就是:

嵌入样式优先于链接或导入样式
内联样式优先于嵌入、链接或导入的样式。

这就是让我困惑的地方。在规范中,没有提到何时根据嵌入样式/链接样式进行排序,尽管在步骤2中确定特定性时使用了内联样式。

不属于样式规则的

声明(例如内容风格属性的(被认为具有比任何选择器(。

考虑一个HTML:

<style>
p {
color:red;  
}  
</style>

<div id = "first-div" class ="firstclass" >
<p id = "para-div">This is a list of countries in the Competition .</p>
</div>

和我链接的css

#para-div {
color : yellow;
}

在这种情况下,应用黄色,也就是说,在根据嵌入的vs链接的规则进行排序之前,计算specifity[规范中的第2步]。

现在,如果链接样式和嵌入样式具有相同的特定性,如下所示:

<style>
#para-div {
color:red;  
}  
</style>

仍然将颜色设置为黄色,并覆盖嵌入的规则。我假设这是基于样式顺序(规范中的第3步(,因为链接样式稍后会出现。

所以我的问题是;嵌入样式优先于链接或导入样式";就像我的课本上说的那样?

我希望这是有道理的。

作为问题的答案,嵌入样式优先考虑,因为它更接近样式对象。当你的浏览器从上到下读取CSS文件时,将你的CSS想象成真正的级联:

  1. CSS定义更高
  2. CSS定义的下
  3. HTML中定义的CSS(嵌入(
  4. 你的风格-内容

你越接近你的内容,你就越具体。合乎逻辑的是,如果你定义了,或者你的开发人员在更高的地方定义了某种风格,你应该能够通过内容本身来克服它,因为内容是最重要的。

如果你想让一些风格不被过度渲染,那就用吧!这句话的结尾很重要。

最新更新