css - 将非选择器添加到样式会破坏样式

标签 css css-selectors

我正在尝试将某种hover 样式应用到所有元素除了 第一个元素。出于某种奇怪的原因,:first-child 有效,但添加 :not(first-child) 无效。为什么?完整的 JSFiddle here .

编辑:
显然,一小部分代码的添加打破了这种风格,我没有添加到原始 fiddle 中,因为我认为这无关紧要,现在我意识到它确实如此。请注意,当附加标签位于 a 标签之间时,该样式不起作用,如下所示:

<div id="mySidenav" class="sidenav">
  <div id="logoContainer">
    <a href="https://www.google.com/">
      <img src="assets/img/logo_white.png" alt="logo">
    </a>
  </div>
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
  <a href="#">About</a>
  <a href="#">Services</a>
  <a href="#">Clients</a>
  <a href="#">Contact</a>
</div>



工作 CSS:

.sidenav a:first-child:hover{
    color: red;
}

根本不工作 CSS:

.sidenav a:not:(first-child):hover{
    color: red;
}

最佳答案

这利用了 :not 的组合伪选择器和直接后代选择器仅将样式应用于 <a> 直接直接 的元素,.sidenav 的后代.

自从您的第一个 <a> element 是 .sidenav 的孙子,而不是直子, 它没有得到 color: red造型感谢> ,并且由于您关闭的“x”具有 closebtn 类, 我们可以使用 :not(.closebtn)也可以消除那个红色样式:

.sidenav > a:not(.closebtn):hover{
    color: red;
}
<div id="mySidenav" class="sidenav">
    <div id="logoContainer">
        <a href="https://www.google.com/">
            <img src="assets/img/logo_white.png" alt="logo">
        </a>
    </div>
    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
    <a href="#">About</a>
    <a href="#">Services</a>
    <a href="#">Clients</a>
    <a href="#">Contact</a>
</div>

关于css - 将非选择器添加到样式会破坏样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595841/

相关文章:

javascript - 2 列 bootstrap div - 左边应该固定在顶部,右边应该是可滚动的

html - 在 Bootstrap 3.0.3 但不是 3.3.7 上工作的可折叠边栏

html - 从 div 溢出到具有交替背景色的屏幕全宽

html - 使用相同的 CSS 类对两个部分进行不同的样式设置

html - 对 css nth-child() 和 nth-of-type 的说明

wordpress - 左侧固定和右侧流动的流体布局

html - 从 PDF 中的 HTML 背景色创建 PDF

javascript - 如何在 Angular js 中将样式集成到其他页面?

javascript - 跨多个页面组织不显眼的 JavaScript 的最佳方式是什么?

jquery - IE7 中 jQuery 选择器中的特殊字符