【问题标题】:nav bar w/burger menu as open / close button带有汉堡菜单的导航栏作为打开/关闭按钮
【发布时间】:2020-01-11 01:59:32
【问题描述】:

编码新手。

带有动画汉堡菜单的侧导航栏出现问题。导航栏在点击(动画汉堡)时打开和关闭,但它总是推回到着陆部分。如果我打开导航栏并选择#4 部分,应用程序将导航到该部分,但是当我单击关闭导航栏时,它会返回到登陆(first) section。换句话说,我无法关闭导航栏而不被送回登陆(first) section

使用基本 JS 函数 - classList.toggle

导航部分

    <nav id="mySidebar" class="sidebar">
        <a href="#section1">LANDING SEC 1</a>
        <a href="#section2">SECTION 2</a>
        <a href="#section3">SECTION 3</a>
        <a href="#section4">SECTION 4</a>
        <a href="#section5">SECTION 5</a>
      </nav>

     <a id="nav-toggle" href="#"><span></span></a>

切换部分


let sideBar = document.getElementById("mySidebar");

document.querySelector( "#nav-toggle" )
  .addEventListener( "click", function() {
    this.classList.toggle( "activateAnimation" );
    sideBar.classList.toggle("openNav");

  });

【问题讨论】:

标签: javascript html css nav


【解决方案1】:

如果切换按钮触发了不需要的导航事件,则需要跳过 #nav-toggle 链接的默认行为。在这种情况下使用 event.preventDefault() 应该可以工作。

我已修改代码以将event 传递给.addEventListener( 函数,然后使用event.preventDefault() 更新该事件

let sideBar = document.getElementById("mySidebar");

document.querySelector( "#nav-toggle" )
  .addEventListener( "click", function(event) {
     this.classList.toggle( "activateAnimation" );
     sideBar.classList.toggle("openNav");
     event.preventDefault();
});

【讨论】:

    【解决方案2】:

    感谢您的帮助和建议。罗汉的名单很棒,谢谢!事实证明,我需要添加一行代码来 preventDefault() 阻止浏览器重新路由回登陆部分。 :)

    【讨论】:

    • prevnetDevault() 用于锚标记!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多