javascript - 以错误的顺序应用的 CSS 类

标签 javascript html css angularjs

我有一个单独使用时工作正常的代码。

<div class="red green blue"> </div> 

现在 red 的属性首先被应用,然后被 green 覆盖,然后被 blue 覆盖。最后,divblue

但是,当我通过 angular include 在引用 HTML 文件的主应用程序中加载相同的内容时,CSS 的顺序被颠倒了。

现在 blue 首先被 green 覆盖,然后被 red 覆盖。现在 divred

这破坏了代码逻辑。

如果有人有想法,可能的原因是什么。

最佳答案

Now properties of red are applied first then overridden by green then by blue

那不是 CSS 的工作方式。类列表中类的顺序与这些类应用于元素的规则的优先级无关。

CSS 规则被应用于

  • 规则的特殊性
  • 规则在 CSS(不是类列表)中相对于具有相同特异性的其他规则的顺序(例如,较晚的规则获胜)
  • 规则是否有!important标志

更多信息 the specification .

例子:

.red {
  color: red;
}
.green {
  color: green;
}
.blue {
  color: blue;
}
<div class="red green blue">red green blue</div>
<div class="blue green red">blue green red</div>

请注意,两个 div 都有蓝色文本(由 blue 指定的颜色),即使第一个是 red green blue 而第二个是 blue green red ,因为这三个规则都具有相同的特异性,.blue 规则是 CSS 中的最后一条规则,它们都没有被标记为 !important

相比之下,让我们使 .green 规则更具体:

.red {
  color: red;
}
div.green {
  color: green;
}
.blue {
  color: blue;
}
<div class="red green blue">red green blue</div>
<div class="blue green red">blue green red</div>

注意 div 现在是绿色而不是蓝色,因为 div.green.blue 更具体,所以 div.green 规则优先于 .blue 规则,即使 .blue 位于 CSS 的后面。

关于javascript - 以错误的顺序应用的 CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548555/

相关文章:

javascript - 在 Firebase 的 ng-repeat 中显示数据

javascript - 无法解析不同文化的日期

php - 在我的网站中自定义 RSS 提要

css - 缩小尺寸时浏览器弄乱了侧边栏

css - 如何使用 CSS 为子 div 设置相同的高度

javascript - 将网络浏览器控件与 angularjs 一起使用

html - HTML anchor 内的图像会产生不需要的人工制品

javascript - 为什么我必须对 javascript a href 链接进行双重编码?

html - 忽略父元素边距

javascript - 如何与 php 共享 javascript var?