CSS 选择器层次结构?

标签 css css-selectors css-specificity

我认为我有两个类指向同一事物,但在使用“left”时却并非如此。

当我为“.side-menu”选择器编辑“left”时,没有任何反应,但当我更改“.white-menu .side-menu”的“left”值时,left 值发生变化。但是,当我使用 .side-menu 添加边框时,会出现边框。这是怎么回事?

我在这里搜索并用 Google 搜索了有关后代选择器和选择器层次结构的信息,但没有找到任何信息。提前致谢!!

<!DOCTYPE html>
<html>
    <head>
         <title>test</title>
         <link rel = 'stylesheet' href = 'slideout.css'>
    </head>

    <body class = 'white-menu'>
         <nav class = 'side-menu'>  This is a side menu </nav>  
    </body>
</html>


CSS

.side-menu{
    background-color:green;
    position: fixed;
    top: 0;
    left: 40px;
    width: 210px;
    height: 100%;
 }

.white-menu .side-menu {
   left: 20px;
 }

jsFIDDLE

最佳答案

规则在css文件中的位置与它关系不大。在上述情况下,“.white-menu .side-menu”规则比“.side-menu”规则具有更强的选择器“特异性”。 “.white-menu .side-menu”有两个匹配点,而“.side-menu”只有一个匹配点。匹配点越多,匹配越强,特异性越高。适用于给定 HTML 元素的多个 css 规则中描述的 HTML 属性将采用更强匹配的值。 Position in the css stream only wins if the selector match is a tie.这是一个复杂的主题,更多信息在这里:http://www.w3.org/TR/css3-selectors/#specificity

关于CSS 选择器层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24987293/

相关文章:

html - 使用 HTML 和 CSS 的下拉菜单让我头疼

html - CSS 样式优先级未按预期工作

css - 为什么我不能覆盖现有的伪元素?

html - 类的最具体的 CSS 选择器

jquery - 将 <th> 类附加到同一列中的 <td>

html - 响应式表格和显示 flex(Bootstrap)

html - 是否有任何实际原因不首先为 Gmail 构建响应式电子邮件?

javascript - 视频正在自动调整我的大小

css - 标题背景环绕

CSS 属性选择器类以但不等于