【问题标题】:How to show <div> when user does not scroll the page当用户不滚动页面时如何显示 <div>
【发布时间】:2020-12-20 12:23:22
【问题描述】:

这个简单的代码,当用户向下滚动页面并显示 div 时隐藏 div "Navbar", 当用户向上滚动时。

如何更改此代码 - 只有当用户滚动页面时 div 才会不可见? 而当用户停止滚动时,div 会出现在屏幕上吗?

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

请帮忙! 感谢您的宝贵时间

【问题讨论】:

    标签: javascript scroll


    【解决方案1】:

    您可以使用 setTimeout 来实现。它的工作原理是这样的:当用户滚动时,导航栏被隐藏并开始超时,如果用户在接下来的 100 毫秒内没有滚动,这将使导航栏可见。

    // We need this to manage setInterval
    var isScrolling;
    navbar = document.getElementById("navbar");
    
    window.addEventListener('scroll', ()=>{
       navbar.style.top = "-" + navbar.style.height;
       window.clearTimeout( isScrolling );
    
       isScrolling = setTimeout(function() {
           navbar.style.top = "0";
       }, 100);
    
    }, false);
    

    试一试。

    【讨论】:

    • 我刚试过你提出的代码
    • 它使 div 始终可见,与鼠标滚动没有任何关系:(
    • 我忘了在 -50 之后添加 'px' => document.getElementById("navbar").style.top = "-50";。我已经编辑了答案,现在再试一次,它应该可以工作。让我稍微优化一下
    • 感谢您标记我的回答!顺便说一句,您可以在变量中提取导航栏以获得更有效的代码,并将硬编码的-50px 替换为导航栏的实际高度;)检查答案。干杯!
    • 请说,Dorin - 当用户点击页面上的某处或此导航栏时,我如何管理导航栏隐藏起来? (除了卷轴,还有它!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多