javascript - 想在使用 js 或 jquery 向下/向上滚动时隐藏/显示导航栏

标签 javascript html css

我只是想在向下滚动时隐藏导航栏并在向上滚动时显示导航栏,所以我添加了我所做的但我无法实现它,在此先感谢:)

我的导航栏 html 代码

<div class="nav-scroll">
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container-fluid">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>                        
            </button>
             <img src="/cmm/images/codemymobile-logo-light.svg">
          </div>
          <div class="collapse navbar-collapse" id="myNavbar">
            <ul class="nav navbar-nav navbar-right">
              <li><a href="#myPage">PORTFOLIO</a></li>
              <li><a href="#band">OUR EXPERTISE</a></li>
              <li><a href="#tour">PROCESS</a></li>
              <li><a href="#contact">SERVICE</a></li>
              <li><a href="#contact">CASE STUDIES</a></li>
              <li class="qoute-btn"><a href="#contact">GET A QUOTE</a></li>


            </ul>
          </div>
        </div>
      </nav>
    </div>

我的js如下

var prevScrollpos = window.pageYOffset;
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
  if (prevScrollpos > currentScrollPos) {
    document.getElementById("nav-scroll").style.top = "0";
  } else {
    document.getElementById("nav-scroll").style.top = "-50px";
  }
  prevScrollpos = currentScrollPos;
}

最佳答案

解决方案中的第一个问题是您有一个类 ( <div class="nav-scroll"> ),但您使用的是 document.getElementById() .您应该在 HTML () 中使用 id 或使用 document.getElementsByClassName()[0]在你的 JavaScript 中。

您的问题带有 jquery 标记,但您的代码使用纯 JavaScript。您可以在下面看到您的代码版本,其中进行了细微更改以帮助您取得进步:

window.onscroll = function() {
  var currentScrollPos = window.pageYOffset;

  // 20 is an arbitrary number here, just to make you think if you need the prevScrollpos variable:
  if (currentScrollPos > 20) {
    // I am using 'display' instead of 'top':
    document.getElementById("nav-scroll").style.display = "none";
  } else {
    document.getElementById("nav-scroll").style.display = "initial";
  }
}

尝试一下您自己的解决方案后,您可以尝试转向 jQuery。这是一个有用的链接:

https://codepen.io/JTParrett/pen/fnCKE

关于javascript - 想在使用 js 或 jquery 向下/向上滚动时隐藏/显示导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235230/

相关文章:

javascript - 如何使用 browserify 创建的包文件?

javascript - 在 Javascript 中添加命名空间行,就像在 C# 中一样

javascript - 在鼠标悬停时显示图像的一部分

html - 如何将 bootstrap4 导航栏转换为移动侧边栏?

html - 显示 :inline not working in IE8

javascript - 如何根据浏览器大小更改元素的顺序?

javascript - 为什么范围输入不注意值的变化?

javascript - 时间线操作布局 - 不显示附件

html - CSS 高度等于宽度

CSS IE 只有条件