Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示<;部门>;当用户不滚动页面时_Javascript_Scroll - Fatal编程技术网

Javascript 如何显示<;部门>;当用户不滚动页面时

Javascript 如何显示<;部门>;当用户不滚动页面时,javascript,scroll,Javascript,Scroll,这段简单的代码,当用户向下滚动页面并显示div时,隐藏div“导航栏”, 当用户向上滚动时 如何更改此代码-使div仅在用户滚动页面时才可见? 当用户停止滚动时,屏幕上将显示div <script> var prevScrollpos = window.pageYOffset; window.onscroll = function() { var currentScrollPos = window.pageYOffset; if (prevScrollpos > cur

这段简单的代码,当用户向下滚动页面并显示div时,隐藏div“导航栏”, 当用户向上滚动时

如何更改此代码-使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>

var prevScrollpos=window.pageYOffset;
window.onscroll=函数(){
var currentScrollPos=window.pageYOffset;
如果(prevScrollpos>currentScrollPos){
document.getElementById(“navbar”).style.top=“0”;
}否则{
document.getElementById(“navbar”).style.top=“-50px”;
}
prevScrollpos=当前ScrollPos;
} 
求求你,救命!
感谢您抽出时间

您可以使用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);

试试看。

您可以使用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',here=>
document.getElementById(“navbar”).style.top=“-50”;
。我已经编辑了答案,现在再试一次,应该可以了。让我优化一下谢谢你标记我的答案!顺便说一句,你可以提取变量中的导航栏,以获得更有效的代码,并用导航栏的实际高度替换硬编码的
-50px
。)检查答案。干杯喂,请多林-当用户单击页面或导航栏上的某个位置时,导航栏会隐藏起来,我该如何管理呢?(除了滚动之外,还有额外的内容!)我刚刚尝试了您建议的代码。它使div始终可见,与鼠标滚动没有任何关系:(我忘了在-50后面添加'px',here=>
document.getElementById(“navbar”).style.top=“-50”;
。我已经编辑了答案,现在再试一次,应该可以了。让我优化一下谢谢你标记我的答案!顺便说一句,你可以提取变量中的导航栏,以获得更有效的代码,并用导航栏的实际高度替换硬编码的
-50px
。)检查答案。干杯喂,请多林-当用户单击页面或导航栏上的某个位置时,导航栏会隐藏起来,我该如何管理呢?(除了卷轴之外,还有其他内容!)