javascript - 使用 onscroll 动态更改 div 的高度不起作用

标签 javascript jquery

我正在尝试使用 jquery 来更改底部和顶部导航栏上的 div 高度,就像在这个 codepen 上一样.

jquery 是这样的:

$(document).ready(function() {
  var lastScrollTop = 0;
  var img = 100;
  $(window).scroll(function() {
    var st = $(this).scrollTop();
    if (st > lastScrollTop) {
      // downscroll code
      console.log('downward')
      img = img + 1;
      $('.img').height(img);
    } else if (st < lastScrollTop) {
      // upscroll code
      console.log('upward')
      img = img - 1;
      $('.img').height(img);
    }
    lastScrollTop = st;

  }).scroll();
})
body {
  height: 2000px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

下面是 jquery 的 html:

<div class='wrapper'>
  <nav>
    <div class='topnav'>
      <div class='img'>
        
      </div>
    </div>
    <div class='bottomnav'>
      
    </div>
  </nav>
  <div class='main'>
    I am main content 
  </div>
</div>

问题是向下滚动的 console.logs 与向上滚动的 console.logs 不匹配。所以跨越两个导航的多边形 div 并没有在它应该的地方结束。请查看下图的 console.logs:

enter image description here

我试图让顶部导航消失,因为你滚动灰色导航变得固定,多边形形状的 div 变成灰色导航组件的大小。这个想法是为了获得类似于梦幻 super 联赛网站上的效果。

如有任何帮助,我们将不胜感激。如果您需要更多详细信息,请询问并提供说明。

最佳答案

向上和向下滚动并不总是以 1 为增量发生,因此不匹配。如果你慢慢向上滚动,它的计数会超过向下滚动。相反,您需要做的是确定希望发生更改的断点。所以例如您希望顶部导航栏在滚动时消失。顶部导航栏的高度为 50,因此当您的 scrollTop 超过 50 时,将灰色栏位置固定在顶部。检查这个codepen https://codepen.io/anon/pen/RxjoeG

$(document).ready(function () {
  var lastScrollTop = 0;
  var img = 100;
  $(window).scroll(function () {
    var st = $(this).scrollTop();
    if(st >= 50) {
      $('.bottomnav').css({'position':'fixed', 'top':0});
    } else {
      $('.bottomnav').css({'position':'initial'});
    }
  }).scroll();
})

关于javascript - 使用 onscroll 动态更改 div 的高度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48125058/

相关文章:

javascript - 谷歌浏览器在加载期间错误地报告图像的宽度和高度

javascript - 加载模板时出现 AngularJS、Localhost 和 CORS 错误

javascript - 从数组中创建新元素,直到数组每秒为空

javascript - 计时器位置在 JQuery 中显示双倍

jquery - 使用 jQuery 获取数组数据循环并将其附加到组合框副本上

javascript - 如何在滚动jquery期间找到屏幕上的元素

javascript - 我正确地 mock httpBackend 吗?

javascript - Phonegap (Cordova) iOS 推送通知 onNotificationAPN 事件在后台触发

javascript - 从 JSON 字符串中提取值

javascript - jQuery UI Datepicker - 禁用当前日期但不突出显示