html - CSS 选择器优先级

标签 html css google-chrome

我有以下 HTML:

<ul class="menu">
  <li>One</li>
  <li class="two">Two</li>
  <li>Three</li>
</ul>

和以下 CSS:

.menu > li {
  color: red;
}

.two {
  color: green;
}

但是所有列表项都是红色的。如果我将其更改为:

ul > li {
  color: red;
}

.two {
  color: green;
}

.two 类的第二个列表项现在有我想要的绿色。这是任何错误还是为什么它以这种方式工作?

http://codepen.io/Chovanec/pen/iJsuC

最佳答案

您可以 calculate the specificity这些选择器(这里是 friendlier version ):

  • .menu > li 具有特异性 0,0,1,1 (11)。
  • ul > li 具有特异性 0,0,0,2 (2)。
  • .two 具有特异性 0,0,1,0 (10)。

粗体数字只是特性的以 10 为底的表示形式。您并不总是能够以这种方式编写它们,因为 0,0,100,0 也是一个有效的特异性并且必须以高于 100 的基数表示。

回到你的问题:.menu > li > .two > ul > li,因为类选择器比标签更具体名称(类型)选择器。

关于html - CSS 选择器优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905213/

相关文章:

来自数组的 JavaScript 缩略图

jquery - 如何使工具提示(qtip2)位于顶部中心?以及如何在其中添加图像?

javascript - Jquery UI datepicker 添加 "Unknown"选项值到输入

c# - Selenium 禁用恢复页面弹出

safari - Facebook Connect按钮未显示在Safari/Chrome中

google-chrome - 查看 WAMP 和 Chrome 问题的更改

javascript - 将类型文件的输入附加到表单 jquery

html - 使用 CSS 使 div 可垂直滚动

javascript - JavaScript 或全局变量中的 session

jquery - jQuery GUI 开发的良好实践