html - 嵌套 CSS 选择器的特殊性

标签 html css

我想弄清楚为什么下面的“元素一”没有显示为橙色。根据特异性规则,选择器 .one.two 的特异性得分应为 20(二类)。 .one li 应该有 11(一个类,一个元素)。所以感觉它应该显示为橙色,而不是蓝色。

知道为什么没有吗?

此外,作为附带问题,为什么我不能在 .one.two< 中的 .one.two 之间留一个空格选择器?这似乎适用于 Chrome,但不适用于 here .

Link to specificity calculations .

<!DOCTYPE html>
<html>

<head>
  <style>
    .one {
      color: red;
    }
    .two {
      color: green;
    }
    .one li {
      color: blue;
    }
    .one.two {
      color: orange;
    }
  </style>
</head>

<body>
  <div>
    <ul class="one two">
      <li>Item One</li>
    </ul>
  </div>
</body>

</html>

最佳答案

So it feels like it should show as orange, not blue.

Any idea why it doesn't?

您的ul橙色。但是你的 li 是蓝色的,与其父级的颜色无关,因为你已经明确定位它并为其应用了颜色。如果您覆盖隐式 color: inherit,它将不会继承其父项的颜色。

why can't I have a space between the .one and the .two in the .one.two selector?

因为那是一个完全不同的选择器。 .one .two 匹配 .two inside .one.one.two(没有空格)匹配既是 .one 又是 .two 的元素。

<div class="one">
  <div class="two"></div> /* matched by .one .two */
</div>

<div class="one two"></div> /* matched by .one.two */

关于html - 嵌套 CSS 选择器的特殊性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36426167/

相关文章:

html - 如何在 Bootstrap 5 中将文字环绕图像

javascript - 添加/定位独立覆盖到 openseadragon 图像和相关错误消息

html - 获得正确的导航和主要的左侧(不使用 float )

css - 在一行中显示 3 个 DIV

如果长于页面宽度,asp.net 菜单控件隐藏元素

javascript - 转义 HTML 标签。字符集编码可能存在任何问题吗?

html - 关闭 Webstorm 突出显示

html - 在 HTML 中绝对居中表格

javascript - 使用 AngularJS 根据选择值显示 div

javascript - 防止 "enter"按键表单提交但不选择数据列表