html - 带有悬停的嵌套无序列表
问题描述
我有这个(简化的)导航:
.ctmenu {
display: none;
float: right;
}
li:hover > .ctmenu {
display: inline-block;
}
<ul class="menu">
<li>
<span class="ctmenu">CT Menu</span>
<a href="#">Main page</a>
<ul class="menu sub">
<li>
<span class="ctmenu">CT Menu</span>
<a href="#">Sub page</a>
</li>
</ul>
</li>
</ul>
当我悬停一个 li 时,应该可以看到直接子 .ctmenu。那行得通,但我只希望鼠标当前所在的元素不显示.ctmenu。当我悬停“子菜单”时,“主页”的 .ctmenu 也可见,因为我也在悬停它。
我只喜欢 CSS 修复,但 javascript/jQuery 可以。
编辑:
我在第一个示例中犯了一个小错误,从答案中我可以看出这很重要:
.ctmenu
是在结构中的之前a
并带有a float:right
,所以我不能使用a + .ctmenu
选择器。是否有相反的等价物?
解决方案
试试这个:
.ctmenu { display: none; }
li a:hover + .ctmenu, .ctmenu:hover { display: inline-block; }
<ul class="menu">
<li>
<a href="#">Main page</a><span class="ctmenu">C Menu 1</span>
<ul class="menu sub">
<li>
<a href="#">Sub page</a><span class="ctmenu">C Menu 2</span>
</li>
</ul>
</li>
</ul>
推荐阅读
- python-3.x - elasticsearch5的身份验证异常
- system.reactive - 如何实现你自己的合并操作符,它可以正确地合并冷的 observables
- docker - docker-compose 等待启动,直到挂载主机文件系统
- python - 规范化python
- javascript - 外层 div 有点击功能,内层 div 没有
- python - 如何以矢量化形式计算这种乘法?
- javascript - Moment.js 从现在/今天在几天、几个月和几年前
- android - 登录错误的 Nativescript 示例应用程序:活动用户已存在。请在登录前注销活动用户
- javascript - dragula js:如何限制droparea中的元素数量?
- reactjs - Visual Studio 2019 Enterprise 中的 HTML 自动完成(或 Emmet 或 ZenCoding)在编辑 JSX 时不起作用。(不是 VS 代码)