html - 为什么 Hover 不能处理嵌套在另一个列表下的列表

标签 html css hover

我正在运行这个简单的“测试”代码来更改嵌套列表的背景颜色 <ul class="dropcontent">通过使用 :hover on parent <li class="drop">

.drop:hover .dropcontent {
  background-color: yellow;
}
<body>
  <ul id="nav">
    <li><a href="#">Home</a></li>
    <li class="drop"><a href="#">Services</a></li>
    <ul class="dropcontent">
      <li><a href="#">serv1</a></li>
      <li><a href="#">serv2</a></li>
      <li><a href="#">serv3</a></li>
      <li><a href="#">serv4</a></li>
      <li><a href="#">serv5</a></li>
    </ul>
    <li><a href="#">Gallery</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Get in Touch</a></li>
  </ul>
</body>

请有人解释这里出了什么问题。

最佳答案

.dropcontent.drop 的 sibling (不是后代),所以选择器 .drop:hover .dropcontent不会瞄准它。

要更正此问题,请移动结束符 </li>.drop收盘后</ul>.dropcontent :

.drop:hover .dropcontent {
  background-color: yellow;
}
<body>
  <ul id="nav">
    <li><a href="#">Home</a></li>
    <li class="drop"><a href="#">Services</a>
      <ul class="dropcontent">
        <li><a href="#">serv1</a></li>
        <li><a href="#">serv2</a></li>
        <li><a href="#">serv3</a></li>
        <li><a href="#">serv4</a></li>
        <li><a href="#">serv5</a></li>
      </ul>
    </li>
    <li><a href="#">Gallery</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Get in Touch</a></li>
  </ul>
</body>

或者使用 adjacent sibling combinator ( + )使用选择器 .drop:hover + .dropcontent :

.drop:hover + .dropcontent {
  background-color: yellow;
}
<body>
  <ul id="nav">
    <li><a href="#">Home</a></li>
    <li class="drop"><a href="#">Services</a></li>
    <ul class="dropcontent">
      <li><a href="#">serv1</a></li>
      <li><a href="#">serv2</a></li>
      <li><a href="#">serv3</a></li>
      <li><a href="#">serv4</a></li>
      <li><a href="#">serv5</a></li>
    </ul>
    <li><a href="#">Gallery</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Get in Touch</a></li>
  </ul>
</body>

请注意,前者将在选择子链接时应用悬停,而后者仅在 .drop 时应用悬停。本身被选中。

关于html - 为什么 Hover 不能处理嵌套在另一个列表下的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367258/

相关文章:

css - Web 应用程序网格的样式

javascript - 页面中的多个 (9) 选项卡,明智与否?

jquery - 简单的 Jquery 悬停放大

php - "No Element Found"试图使 AJAX 发送/接收字符串到 PHP

javascript - 如何将 'select' 选项正确绑定(bind)到 API 调用?

html - 中心按钮的可能模式

css - 绑定(bind) MXML CSS 值

css - 如何停止 :hover state from being active on a touchscreen?

html - 悬停自动完成建议使元素消失

javascript - 如何添加不同的占位符颜色