首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery导航隐藏菜单

问使用jQuery导航隐藏菜单
EN

Stack Overflow用户
提问于 2019-05-26 18:12:14
回答 2查看 133关注 0票数 0

我用jquery建立了一个导航菜单,当我点击菜单图标时它会打开,但当我再次点击菜单图标时它不会关闭

这是html代码:

代码语言:javascript
复制
<aside class="aside_menu">
        <span class="arrow"></span>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
</aside>

这是jquery代码:

代码语言:javascript
复制
$(document).ready(function () {
$(".aside_menu .arrow").click(function () {
    var aside_menu = $(this).parent();
    if (aside_menu.offset().right === 0)
        aside_menu.animate({right: "-200px"})
    else
        aside_menu.animate({right: "0px"})
})

})

菜单隐藏在页面右侧,只显示菜单图标

抱歉,我说脏话了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-26 18:32:37

.offset()返回一个包含top和left属性的对象,因此您的代码永远不会工作,因为aside_menu.offset().right始终是未定义的。请参阅http://api.jquery.com/offset/

您必须使用aside_menu.offset().left,然后根据您的页面布局在if条件中找到合适的值。

票数 0
EN

Stack Overflow用户

发布于 2019-05-27 10:09:30

简单的事情在最大的阻力线之后,而不是jQuery,对于这样简单的事情,最好使用JS。此外,JS中的动画很笨拙,特别是在较弱的计算机和智能手机上,这会破坏用户体验。使用简单的JS和CSS可以更容易地做到这一点。也许我的代码不会对您有所帮助,但我希望能引导您走上正确的道路。Ps。尽量不要在类和属性和id中使用:"_“(下划线),因为它是SEO方面的,它是在膝盖上打的一针强心针,更好的选择是:"-”(破折号)。

​

代码语言:javascript
复制
var menu = document.querySelector("#menu");
var button = document.querySelector("#button");

function toggleMenu(){
	if(!menu.classList.contains("fade")){
  	menu.classList.add("fade");
  }else{
  	menu.classList.remove("fade");
  }
}

button.addEventListener("click", toggleMenu);
代码语言:javascript
复制
body{
  margin: 0;
  display: flex;
  }
#menu{
  background: pink;
  width: 70px;
  height: 100%;
  text-align: center;
  transition: 0.34s;
  }
#button{
  height: 30px;
  transition: 0.34s;
  }
.fade{
  width: 0 !important;
  }
.fade *{
  display: none;
}
代码语言:javascript
复制
<aside id="menu" class="fade">
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
        <div><a href="#">test</a></div>
</aside>
<button id="button">
Button
</button>

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56312599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档