【发布时间】:2017-10-31 01:00:17
【问题描述】:
我被要求更新我们网站 whesearchreporting.com 的左侧导航菜单(如果您想访问该网站,您可以输入任何用户名和密码。网站仍处于测试模式)。目前,导航菜单在全宽屏幕上可见,但如果将屏幕宽度减小到大约 900 像素),菜单会消失,但可以通过左上角的菜单切换图标展开。但是,他们现在想将此逻辑更改为以下内容,而我在弄清楚如何修复时遇到了问题:
- 在全屏时,左上角看不到菜单切换按钮。菜单始终保持打开状态
- 在小屏幕或移动屏幕上,菜单切换按钮变为可见。
所以基本上,我需要找到处理使左侧导航菜单在屏幕尺寸减小到大约 950 像素时消失的代码,并将相同的逻辑应用于左上角的菜单切换图标。这是在引导程序中处理的吗?
如果有帮助,这里有一些代码可以处理使我的导航菜单变小或变大(尽管我认为这与使菜单在较小的屏幕上消失没有太大关系):
$(function () {
$('#sidebar-menu li ul').slideUp();
$('#sidebar-menu li').removeClass('active');
$('#sidebar-menu li').on('click touchstart', function() {
var link = $('a', this).attr('href');
if(link) {
window.location.href = link;
} else {
if ($(this).is('.active')) {
$(this).removeClass('active');
$('ul', this).slideUp();
} else {
$('#sidebar-menu li').removeClass('active');
$('#sidebar-menu li ul').slideUp();
$(this).addClass('active');
$('ul', this).slideDown();
}
}
});
$('#menu_toggle').click(function () {
if ($('body').hasClass('nav-md')) {
$('body').removeClass('nav-md').addClass('nav-sm');
$('.left_col').removeClass('scroll-view').removeAttr('style');
$('.sidebar-footer').hide();
if ($('#sidebar-menu li').hasClass('active')) {
$('#sidebar-menu li.active').addClass('active-sm').removeClass('active');
}
} else {
$('body').removeClass('nav-sm').addClass('nav-md');
$('.sidebar-footer').show();
if ($('#sidebar-menu li').hasClass('active-sm')) {
$('#sidebar-menu li.active-sm').addClass('active').removeClass('active-sm');
}
}
});
});
这是该代码部分的 html:
<div class="nav toggle">
<a id="menu_toggle"><i class="fa fa-bars"></i></a>
</div>
知道我应该在哪里找到处理使该菜单在较小屏幕上消失的代码吗?
谢谢
【问题讨论】:
-
您需要使用媒体查询。此外,您应该缓存您的 jQuery 对象,即这样做
var $body = $( 'body' );而不是在任何地方使用$( 'body' )。 -
你的页面上有一些 CSS 吗?如果它包含媒体查询,它可能是屏幕相关行为的原因
-
你可以用css中的媒体查询来做到这一点
-
了解如何使用浏览器的开发者工具。使用这些,您可以轻松找出使左列在较小屏幕上消失的原因。切换到响应模式,检查可见的侧栏元素 - 然后缩小响应视口,直到它消失,然后你会看到哪个 CSS 规则负责。
标签: javascript jquery css twitter-bootstrap