基于样式表中顺序的 CSS 特异性/优先级?

标签 css css-selectors css-specificity css-cascade

我简单看了下CSS3 Selectors spec但找不到任何解决这个问题的方法。此外,我没想到当您移动 CSS 声明时结果会发生变化,但它确实发生了变化。任何帮助都会很棒。

div.green_colour div.has_colour{
  background-color: green;
}
div.red_colour div.has_colour{
  background-color: red;
}
<div class="red_colour">
  <div class="green_colour">
    <div class="has_colour">
      I would like this to be green
    </div>
  </div>
</div>
<div class="green_colour">
  <div class="red_colour">
    <div class="has_colour">
      I would like this to be red
    </div>
  </div>
</div>

最佳答案

您可以使用 E > F 子选择器来解决您的问题:

div.green_colour > div.has_colour{
  background-color: green;
}
div.red_colour > div.has_colour{
  background-color: red;
}

根据这个图表http://www.quirksmode.org/css/contents.html它兼容所有主流浏览器和 IE 7+

如果您有兴趣,还有其他方法可以实现上述解决方案(例如通过 javascript)。

-- 编辑:

我不能 100% 确定您的解决方案不起作用的原因是否是由于浏览器从右到左而不是从左到右解析 CSS,但我认为这与此有关。如果我错了,请有人纠正我。

关于基于样式表中顺序的 CSS 特异性/优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382640/

相关文章:

jquery - 如果用户向下滚动页面,第一个标题元素就会消失

javascript - 在元素上启用 flex 滚动/过度滚动,但不在主体上启用

html - 如何将无序列表中的列表标签居中?

css - CSS specificity中的points是怎么计算的

javascript - 文字装饰 :none doesn't remove text decoration

css - "*"在 CSS specificity 中排在首位,为什么?

具有三列的 HTML/CSS 全宽标题 - 2 固定 1 松散

jQuery 按类选择下一个 div

html - :nth-of-type selector overrides all other CSS selectors

CSS - 选择器可访问性