【问题标题】:css menu sub-items below can't be reached on hover悬停时无法访问下面的 CSS 菜单子项
【发布时间】:2015-04-22 22:10:48
【问题描述】:

我在 Wordpress 中有一个具有 3 个级别的 css 菜单,问题是悬停时无法到达打开级别 3 的菜单级别 2 下方的级别(完整的 2 级菜单关闭)。 有什么帮助吗?

我的代码是:

<div class="nav">
<ul>
    <li><a href="#">Main-menu</a>
<ul class="sub-menu">
    <li><a href="#">Sub-item</a></li>
    <li><a href="#">Second-submenu</a>
    <ul class="sub-menu">
        <li><a href="#">XY</a></li>
        <li><a href="#">XY</a></li>
        <li><a href="#">XY</a></li>
    </ul>
</li>
    <li><a href="#">Last-sub-menu</a>
    <ul class="sub-menu">
        <li><a href="#">XY</a></li>
        <li><a href="#">XY</a></li>
        <li><a href="#">XY</a></li>
    </ul>
</li>
</ul>
</li>
    <li><a href="#">Second-item</a></li>
    </ul>
</div> 

还有css:

.nav { font-size:1.4em; }

.nav ul { padding:0; margin: 0; background: #0A488E; }

.nav ul li { display:inline-block; margin-right:5%; }

.nav ul li a { color:white; }

.nav li ul.sub-menu {
  display: none;
  position: absolute;
  padding: 7px 21px;
  padding-left: 21px;
  text-align: left;
  margin-left: -21px;
  background: #0A488E;
  font-size: 0.9em;
  z-index: 100;
}

.nav li:hover > ul.sub-menu, .nav li ul.sub-menu li:hover > ul.sub-menu {
display: block;
}

.nav li ul.sub-menu li {
display:block;
margin: 9px 0;
}

.nav li ul.sub-menu li ul.sub-menu {
  position: relative;
  padding: 0 5%;
} 

小提琴在这里:https://jsfiddle.net/f7ny3s3r/2/

(最后一个子菜单有问题)

感谢您的帮助!

【问题讨论】:

  • 它有效,这只是您设置这些项目的方式。当您通过第二个子菜单向下移动鼠标时 - 它会在鼠标离开时打开和关闭。当鼠标将其留在底部时,它会使该菜单变小,因此您无法点击底部项目。一个建议可能是让子子项出现在一边。
  • 另外 - 我知道这只是标记为 css,所以这只是一个建议 - 但如果你不介意添加一点 js/jquery,你可以将子菜单更改为单击。
  • 谢谢,但我想保留菜单 css 并悬停 - 如果可能的话,因为主菜单项也有各自的页面。
  • 顺便说一句。是否有可能延迟关闭打开的菜单,所以让用户将鼠标悬停在底部的菜单上?

标签: css wordpress


【解决方案1】:

根据您的要求,我在这里修复了它-

https://jsfiddle.net/f7ny3s3r/7/

代替 display: none 进入显示块。您可以将其保持块状并使用高度和不透明度进行过渡。这将解决您的问题,并添加动画。

所以不是:

.nav li ul.sub-menu {
  display: none;

用途:

.nav li ul.sub-menu {
transition: 0.5s all;
display: block;
height: 0;
opacity:0;

还有

.nav li:hover > ul.sub-menu, .nav li ul.sub-menu li:hover > ul.sub-menu {
height: auto;
opacity:1;
}

您可以将过渡更改为您想要的任何内容,包括延迟(或根本没有过渡)。

【讨论】:

  • 谢谢,它有效!在二级子菜单重叠的一些地方还是有点笨拙,但是这样可以接受。干杯!
  • @Gas 很高兴我能帮上忙!
  • 对不起脚本中的一个小错误:即使不是在主菜单本身,而是在不可见的子菜单上也会触发:-(有没有机会让它更好地工作?
  • @Gas 因为子菜单在悬停之前有填充/边距,并且在悬停之前也不应该阻止其中的 li。你可以对 li 的内部做同样的事情,只是让它们的高度为 0,不透明度为 0,直到它上面的悬停被触发。
  • 好的,我添加了这些,它似乎工作。 .nav li ul.sub-menu li, .nav li ul.sub-menu li a { height: 0; opacity:0; display:none; } .nav li:hover &gt; ul.sub-menu li, .nav li:hover &gt; ul.sub-menu li a { display:block; } .nav li:hover &gt; ul.sub-menu, .nav li ul.sub-menu li:hover &gt; ul.sub-menu, .nav li:hover &gt; ul.sub-menu li, .nav li:hover &gt; ul.sub-menu li a { height: auto; opacity:1; } 我仍然需要调整某些元素的边距/填充...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 2013-07-05
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多