【发布时间】:2016-12-23 10:16:33
【问题描述】:
我想创建一个带有下拉子菜单项的响应式菜单。到目前为止,它可以在台式机上运行,但不能在移动设备上运行(我正在 iPhone 5s 上进行测试)。
这是我的代码:
<nav id="mainNav" class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand page-scroll" href="#page-top" style="padding-top: 0px !important">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu1</a>
<ul class="dropdown-menu">
<li>
<a href="#">Submenu1</a>
</li>
<li>
<a href="#">Submenu2</a>
</li>
<li>
<a href="#">Submenu3</a>
</li>
</ul>
</li>
<li>
<a href="#">Menu2</a>
</li>
<li>
<a href="#">Menu3</a>
</li>
<li>
<a href="#">Menu4</a>
</li>
<li>
<a href="#">Menu5</a>
</li>
</ul>
</div>
我尝试通过两种方式解决问题:
1. 我尝试添加 jquery(但后来我意识到我不足以单独编写一个好的代码) - 我还读到我应该使用“listenWidth()”但我真的不知道怎么办。
function dropdown() {
if ($(window).width() >= 780) {
jQuery('ul.nav li.dropdown').hover(function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(50).fadeIn();
}, function() {
jQuery(this).find('.dropdown-menu').stop(true, true).delay(50).fadeOut();
});
}
}
// Execute on load
dropdown();
// Bind event listener
$(window).resize(dropdown);
2. 我尝试使用 hidden-xs、visible-xs 来实现,但效果不佳。
请帮帮我!
谢谢, F
【问题讨论】:
-
尝试将您的桌面浏览器调整为移动屏幕大小并测试下拉菜单。有效吗?
-
我只是不明白,触摸设备(尤其是移动设备)上的可悬停下拉菜单。由于触摸是他们唯一的指针,我不认为悬停功能真的很有必要。顺便说一句,您的代码实际上正在我现在正在使用的 Xperia mini 上运行。这是您的代码的demo。
标签: jquery html css drop-down-menu twitter-bootstrap-3