html - 使用 :hover, :focus 更改悬停类之外的另一个 css

标签 html css

我有 css 类,它们都是同级的:flex-alignnav-dropdown 当我将鼠标悬停在 flex-align 上时,它工作正常,nav-dropdown 发生变化。

.flex-align:hover ~ .nav-dropdown {
   display: block !important;
}

问题: 我想要的是,只有当我悬停聚焦作为flex-align子项的icon时,它才会改变,这是 nav-dropdown 唯一一次发生变化

谢谢

.flex-align {
    display: flex;
    justify-content: start;
    align-items: center;
}

.nav-dropdown {
    display: none;
    width: auto;
}
.flex-align i:hover ~ .nav-dropdown {
    display: block;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">


<div class="flex-align">
    <i class="fa fa-arrow-right dropdown-icon">&nbsp;</i>
    <p>Main test</p>
</div>
<ul class="nav-dropdown">
    <li><a href="#">test 1</a></li>
    <li><a href="#">test 2</a></li>
    <li><a href="#">test 3</a></li>
</ul>

最佳答案

您可以使用pointer-events CSS 属性可确保图标将悬停事件发送到其父级,但文本不会:

.flex-align {
  display: flex;
  justify-content: start;
  pointer-events: none;
}
.flex-align i {
  pointer-events: auto;
}
.nav-dropdown {
  display: none;
}
.flex-align:hover ~ .nav-dropdown {
  display: block;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />

<div class="flex-align">
  <i class="fa fa-arrow-right dropdown-icon">&nbsp;</i>
  <span>Main test</span>
</div>
<ul class="nav-dropdown">
  <li><a href="#">test 1</a></li>
  <li><a href="#">test 2</a></li>
  <li><a href="#">test 3</a></li>
</ul>

关于html - 使用 :hover, :focus 更改悬停类之外的另一个 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67633047/

相关文章:

css - 为什么两个相邻的行内 block 使用的宽度超过它们的总宽度?

html - 在表格中将文本右对齐

javascript - JS中的增量+自动更新变量值

javascript - 如何获得自动换色?

Jquery 从上到下和从下到上滑动以禁用按钮

javascript - 从 Tumblr 主题中删除导致 CPU 使用率过高的特定 Javascript 代码

html - 如何使 div 元素内联显示?

javascript - 如何显示 :none to display:block elements not take up its original space in DOM?

javascript - 当用户单击它时,如何阻止输入边框颜色发生变化

css - 带有 Bootstrap 3 的 Jquery Tabs 不工作