【发布时间】:2017-01-29 10:41:56
【问题描述】:
我有一个下拉菜单,子菜单放置在不同的元素上。所以基本上当鼠标离开菜单项时,子菜单会立即关闭,因为子菜单不是子菜单。
var menuItem = $(".menu-item");
menuItem.hover(hoverIn, hoverOut);
function hoverIn() {
var mnItemMeta = $(this)[0].getBoundingClientRect();
$(".sub-menu").css({
opacity: 1,
left: mnItemMeta.left
})
}
function hoverOut() {
$(".sub-menu").css({
opacity: 0
})
}
html,body{background-color: #efefef;}
.menu {
list-style: none;
padding-left: 0;
display: flex;
justify-content: center;
}
a {
display: block;
padding: 10px 20px;
text-decoration: none;
color: inherit;
}
.sub-menu {
opacity: 0;
background-color: white;
position: absolute;
transition: .2s ease;
}
.sub-menu-list {
list-style: none;
padding-left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="menu">
<li class="menu-item"><a href="#">Menu Item</a>
</li>
</ul>
<div class="sub-menu">
<ul class="sub-menu-list">
<li><a href="#">Sub Menu 1</a>
</li>
<li><a href="#">Sub Menu 2</a>
</li>
<li><a href="#">Sub Menu 3</a>
</li>
<li><a href="#">Sub Menu 4</a>
</li>
</ul>
</div>
https://jsfiddle.net/yans_fied/6wj0of90/
问题是如何扩展悬停区域,所以当光标指向子菜单时它会忽略hoverOut动作。
注意:不要告诉我将子菜单放在菜单项中,我已经知道它是如何工作的。这是针对需要将子菜单放置在菜单项之外的不同情况。
【问题讨论】:
-
你可以使用
jquery, -
你需要把被悬停的元素放大,或者把子菜单放在里面
-
如果你的子菜单需要放在外面,那么,当用户指向子菜单链接时,如何打开子菜单。因此,子菜单需要位于它自己的主菜单中。
-
@Samir 你检查过我的sn-p吗?所以基本上它就像 tab ui,它持有 tab id 来打开 tabcontent。
-
我遇到了您的问题,您的问题有解决方案。只需增加具有类
menu-item的li的底部填充。确保sub-menu和 li 应该相互连接。但问题是,如果用户想点击子菜单,此时用户必须从父li出来,因此sub-menu会自动隐藏。你会增加多少你的父母li底部paddnig?可以吗?
标签: javascript jquery css hover jquery-events