jquery - 向下滚动时删除粘性类?

标签 jquery html css

这是我的 jQuery 代码,用于在向下滚动时删除粘性类。

$(window).scroll(function (e) {
    if ($('.main_form_wrapper').length != 0) {
        var window_scroll = $(window).scrollTop();
        console.log(window_scroll, "window scroll")
        var bottom_position = window_scroll + $('.main_form_wrapper').outerHeight(true);
        console.log(bottom_position, "form_position for footer")
        var form_top_offset = $('.main_form_wrapper').offset().top;
        console.log(form_top_offset, "form top offset")
        var footer_top_offset = $('.top_footer').offset().top;
        console.log(footer_top_offset,"footer top offset")
        if (window_scroll > form_top_offset &&  bottom_position < footer_top_offset) {
            $(".main_form_wrapper").addClass('sticky'); 
        } else {
            console.log('here')
            $(".main_form_wrapper").removeClass('sticky');  
        }
    }
});

请帮助任何知道它的人。

最佳答案

95% 是 Detecting scroll direction 的副本

我花时间为您创建了一个示例。我认为您缺少的要点是您需要存储最后的滚动位置以了解用户是向上还是向下滚动页面。就这么简单:

var lastScrollTop = 0;
var theWrap = $('.wrap');
$(window).scroll(function(event){
   var st = $(this).scrollTop();
   if (st > lastScrollTop){
       // downscroll code
       theWrap.removeClass('sticky');
   } else {
      // upscroll code
       theWrap.addClass('sticky');
   }
   lastScrollTop = st;
});
.wrap {
  width: 100px;
  height: 2000px;
  background-color: orange;
}
.wrap.sticky {
  background-color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap sticky">

</div>

关于jquery - 向下滚动时删除粘性类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47668479/

相关文章:

javascript - 我可以使用 Angular 将 mouseup 事件绑定(bind)到文档正文吗?

从链接执行 html 时,JavaScript 在 html 中不起作用

html - 如何从 45x45 像素的小图像生成全长淡入菜单?

css - 两个简单的按钮 CSS 问题

html - 固定位置在无序列表标签中不起作用

javascript - 如何将一个下拉菜单中所选选项的属性添加到另一个下拉菜单?

Firefox 上的 JQuery .position() 和 .offset() 错误

jQuery:仅在具有 3 个表单的页面中将事件附加到 2 个表单

css - 移动浏览器上页脚图像的一个像素位移?

html - 类别菜单列对齐 css