【问题标题】:How to close responsive fullscreen menu when user clicks on a link?用户单击链接时如何关闭响应式全屏菜单?
【发布时间】:2016-01-10 14:54:11
【问题描述】:

我的单页网站上有一个响应式菜单,当点击汉堡图标时,它会显示一个透明的全屏菜单。当用户单击右上角的关闭按钮 (X) 时,全屏菜单会关闭,因此一切正常。但由于我的大部分网站都是单页的,因此菜单中的所有链接也是同一页面内的链接。当用户单击其中一个链接时,页面会按预期跳转到那里,但透明的全屏菜单仍保持全屏状态...

当用户单击链接时,菜单应该消失,就像用户单击关闭按钮时一样。这是我要解决的问题,我确信它只需要几行 Javascript,但我对 JS 不太熟悉。

这是网站:

http://www.artegradesign.com

这是相关代码(可能还有更多,不确定):

HTML

<div class="menu-btn"></div>
<nav>
    <ul>
        <li><a href="">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#work">Work</a></li>
        <li><a href="#contact">Contact</a></li>
    </ul>
</nav>

CSS

.menu-btn {
cursor: pointer;
height: 60px;
width: 60px;
display: inline;
z-index: 99;
position: absolute;
top: 2px;
right: 5%;
}
.close-btn {
position: fixed;
z-index: 100;
}
nav {
position: fixed;
top: -1600px;
left: 0;
right: 0;
background-color: rgba(0,26,51,0.95);
transition: all 0.5s;
color: white;
min-height: 100%;
z-index: 99;
}
.open {
top: 0;
}

JS

$(document).ready(function(){
$('.menu-btn').click(function(){
    $('nav').toggleClass('open');
    $(this).toggleClass('close-btn');
    $('.container').toggle();
})
})

更新:单击链接时,我设法关闭了全屏菜单(使用下面的 js),但它也使菜单按钮完全消失。所以我还是需要一个英雄把它带回来!

$(document).ready(function(){
    $('nav li a').click(function(){
        $('nav').toggle();
    })
})

谢谢!

【问题讨论】:

  • 你能把它做成小提琴/plunk吗,我会编辑它
  • 无法让它在那里工作,所以我添加了指向网站本身的链接:artegradesign.com
  • 将其添加到 Javascript 中起到了作用,但菜单按钮现在也消失了...你能帮帮我吗?

标签: javascript html menu responsive-design fullscreen


【解决方案1】:

点击事件的处理方式似乎不太理想,但因为您只是在点击它时寻找一个切换(用于关闭和打开),您可以像这样将链接点击与触发菜单点击联系起来:

$('nav li a').on('click', function(){
    $('.menu-btn').trigger('click');
});

不过,我确实建议为您的导航使用 ID 或特定类。如果您在站点的任何其他位置添加带有无序列链接列表的 nav 元素,它很容易中断。

【讨论】:

  • 做到了,完美!非常感谢您的帮助,我不打算在网站上添加任何其他导航元素,但您也是对的。
猜你喜欢
  • 1970-01-01
  • 2019-05-04
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多