【发布时间】:2018-03-20 12:17:49
【问题描述】:
我有这段代码可以在点击按钮时显示/隐藏菜单
$('#main-menu ul').slideToggle();
当浏览器窗口小于 767 px 时菜单被隐藏,所以这个按钮会出现,它可以打开和关闭它,除了唯一的问题是当我再次调整窗口大小时,菜单消失了,如果切换幻灯片已将其设置为不显示。为了解决这个问题,我添加了代码以在浏览器调整大小后显示菜单。当浏览器窗口再次缩小到小于 767 像素时,这会导致显示新菜单,而不是隐藏默认菜单。然后,当缩放小于 767 像素时,我可以再次隐藏菜单,但这会导致菜单在隐藏时闪烁。
我想知道一种方法来检测 resize() 是否正在按比例放大,在这种情况下,缩小时我可以隐藏()菜单,放大时我可以显示()菜单。
$('.menu-button').click(function() {
$('#main-menu ul').slideToggle();
});
$(window).resize(function(){
var w = $(window).width();
if(w > 767 && $('#main-menu ul').is(':hidden')) {
$('#main-menu ul').show();
}
});
$(window).resize(function(){
var w = $(window).width();
if(w < 767) {
$('#main-menu ul').hide();
}
});
【问题讨论】:
-
为什么不直接使用css根据屏幕witdh来隐藏和显示?此外,您不需要添加 2 个侦听器。只需将您的 w
-
我正在创建一个按钮,用于切换菜单,让用户在浏览器为 时显示或隐藏
-
如果小于 767,您可以只显示按钮,然后单击将类添加到覆盖媒体查询声明的菜单。除非你真的想要动画,这几乎是使用 jquery 的唯一原因。