我正在开发具有移动版和桌面版的导航。布局很好,大多数情况下功能正常,但我遇到slideToggle()
的问题。
例如,当屏幕低于768时,会出现导航展开按钮,然后单击li切换主导航以关闭移动设备上的导航。当我调整窗口大小时,单击主导航会继续切换,即使它高于768。
感谢任何帮助:)
HTML
<nav>
<ul class="mobileNav">
<li>Expand</li>
</ul>
<ul class="mainNav">
<li class="">Item1</li>
<li class="">Item2</li>
<li class="">Item3</li>
<li class="">Item4</li>
</ul>
</nav>
的jQuery
$(document).ready(function() {
var expand = $('.mobileNav li');
menu = $('.mainNav');
$(expand).click(function () {
var width = $(window).width();
if (width < 768) {
menu.slideToggle();
$('.mainNav li').click(function() {
menu.slideUp();
});
}
});
});
答案 0 :(得分:2)
这里有两个问题。
尝试
$(document).ready(function() {
var expand = $('.mobileNav li');
menu = $('.mainNav');
$(expand).click(function () {
var width = $(window).width();
if (width < 768) {
menu.slideToggle();
}
});
$('.mainNav li').click(function() {
if (width < 768) {
menu.slideUp();
}
});
});
答案 1 :(得分:1)
您需要另一个窗口调整大小的事件
$(window).resize(function() {
var width = $(window).width();
if (width > 768) {
menu.show();
}
});
答案 2 :(得分:1)
将以下css
添加到切换div
width:100%!important;
原因:虽然没有宽度定义,但slideToggle会将width和height设为0并显示:none
和扩展模式,反之亦然,宽度将增加到父级宽度,内容正在扩大,并且该位置的高度超过最终阶段所需的高度
当最终宽度达到100%时,高度将重置为所需要的