html - 第一个 child 不在 :hover 内工作

标签 html css sass css-selectors

<分区>

此代码块无效 - 这是我的代码示例:

Codepen example

this block of code not working

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
ul a {
  color: #333333;
  text-decoration: none !important;
  display: block;
  font-size: 16px;
  padding: 10px 15px;
}
ul li {
  position: relative;
  display: inline-block;
}
ul li:hover {
  background: #f7f7f7;
}
ul li:hover ul:first-child {
  background: green;
}
ul li ul {
  position: absolute;
  min-width: 150px;
  top: 100%;
  left: 0;
  background: #f7f7f7;
  padding: 10px 0;
}
ul li ul li {
  display: block;
}
ul li ul li ul {
  top: -10px;
  left: 100%;
}
<ul>
  <li>
    <a href="{{ server.URI }}products/">{{ langs.Products }}Menu</a>
    <ul>
      <li>
        <a href="">menu</a>
        <ul>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
            <ul>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <a href="{{ server.URI }}services/">{{ langs.Services }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}news/">{{ langs.News }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}about/">{{ langs.About }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}contact/">{{ langs.Contact }}</a>
  </li>
</ul>

最佳答案

您可以使用first-of-type 选择器代替first-child:

 ul li:hover > ul:first-of-type

请注意,> 选择器确保最近的后代 ul 仅作为目标 - 请参阅下面的演示和 updated codepen :

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
ul a {
  color: #333333;
  text-decoration: none !important;
  display: block;
  font-size: 16px;
  padding: 10px 15px;
}
ul li {
  position: relative;
  display: inline-block;
}
ul li:hover {
  background: #f7f7f7;
}
ul li:hover > ul:first-of-type {
  background: green;
}
ul li ul {
  position: absolute;
  min-width: 150px;
  top: 100%;
  left: 0;
  background: #f7f7f7;
  padding: 10px 0;
}
ul li ul li {
  display: block;
}
ul li ul li ul {
  top: -10px;
  left: 100%;
}
<ul>
  <li>
    <a href="{{ server.URI }}products/">{{ langs.Products }}Menu</a>
    <ul>
      <li>
        <a href="">menu</a>
        <ul>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
          </li>
          <li>
            <a href="">menu</a>
            <ul>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
              <li>
                <a href="">menu</a>
              </li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <a href="{{ server.URI }}services/">{{ langs.Services }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}news/">{{ langs.News }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}about/">{{ langs.About }}</a>
  </li>
  <li>
    <a href="{{ server.URI }}contact/">{{ langs.Contact }}</a>
  </li>
</ul>

关于html - 第一个 child 不在 :hover 内工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45905069/

相关文章:

Sass源码中的PHP代码

javascript - Webpack 没有捆绑 SCSS/CSS

javascript - 如何使用 javascript 从 HTML 选择选项 onchange 中发布 PHP 变量?

html - 使 HTML textarea Voice Over 可读

javascript - 在 OneDrive 等网站应用程序中创建一个选择工具

javascript - 通过单击链接将元素隐藏后重新出现(需要不包括 return false 或 preventDefault 的解决方案)

css - 如何在 Bulma 中从 Sass 生成 CSS

html - 如何用CSS添加第二个背景?

javascript - Canvas :没有中断的曲线

jquery - 如何在 HTML 元素中设置数据属性