【发布时间】:2014-04-15 05:24:32
【问题描述】:
该网站是一个响应式网站,这是您复制问题的方式:
- 以桌面宽度加载网站(导航元素加载正常)。
- 调整为平板电脑或手机大小(菜单转换为带有三栏图标的手机式下拉菜单。
- 打开和关闭移动导航菜单(设置为显示:无)。
- 现在,当您调整为桌面宽度时,导航栏仍设置为 display: none。
我知道我可以通过创建两个菜单栏并对其应用单独的 ID 来解决此问题,但我想看看是否有人有解决方案让我只需要维护一个菜单。
HTML:
<nav>
<ul id="menu">
<li><a href="#">Who We Are</a></li>
<li id="information">
<a href="#">Why We're Different</a>
</li>
<li id="services">
<a>GPA Services</a>
<ul id="servicesmenu">
<li><a href="#">HealthWatch</a></li>
<li><a href="#">ClaimWatch</a></li>
<li><a href="#">Administrative Services</a></li>
<li><a href="#">Marketing and Sales</a></li>
<li><a href="#">Specialty Services</a></li>
</ul>
</li>
<li id="login"><a>Login</a>
<ul id="loginmenu">
<li><a href="#">Employers</a></li>
<li><a href="#">Members</a></li>
<li><a href="#">Brokers</a></li>
<li><a href="#">Providers</a></li>
</ul>
</li>
<li>
<a href="#">Contact Us</a>
</li>
</ul>
</nav>
jQuery:
$( document ).ready(function() {
$("#menu-icon").click(function() {
$("#menu").slideToggle();
});
$("#services").click(function() {
$("#loginmenu").slideUp();
$("#servicesmenu").slideToggle();
});
$("#login").click(function() {
$("#servicesmenu").slideUp();
$("#loginmenu").slideToggle();
});
$('html').click(function() {
$("#loginmenu").slideUp();
$("#servicesmenu").slideUp();
});
$('#login, #loginmenu, #services, #servicesmenu').click(function(event){
event.stopPropagation();
});
});
或者您可以在此处查看页面的测试版本(注意:页面/图片尚未针对加载时间进行优化,因此某些图片的大小会使加载时间有点长):
【问题讨论】:
-
它是因为一旦你关闭它会使#menu display:none 然后你把浏览器的尺寸变大,它就卡住了 display none;使用 2 个不同的菜单来解决这个问题可能是更好的解决方案,不会让人头疼
-
是的,我知道它发生的原因,我只是想找出解决方法。我考虑过在调整大小时重新加载页面,但这是不好的网络做法。在做类似的事情之前,我只会有两个单独的菜单。
-
如果浏览器大小适合您的桌面媒体查询,您可以简单地将其设置为显示块。我认为你的桌面 css 可以工作 1200 像素或更高
标签: jquery html css responsive-design