【问题标题】:Recalculate Offset Value on window resize调整窗口大小时重新计算偏移值
【发布时间】:2021-07-22 18:38:13
【问题描述】:

我正在创建一个连续循环的图像页面。从 div #loop-end 到 #loop-start 双向循环,带有 jquery 滚动和偏移顶部。

https://codepen.io/akmalmo/pen/eYgoQKd

var element_position = $('#loop-start').offset().top;

$(document).on('scroll', function() {
    var y_scroll_pos = window.pageYOffset;
    var scroll_pos_test = element_position;

    if(y_scroll_pos > scroll_pos_test + 2) {


 var loopend = $('#loop-end').offset().top;
 var loopstart = $('#loop-start').offset().top;

$(document).scroll(function() {
    if ( $(document).scrollTop() >= loopend + 1 ) {
    $(document).scrollTop($('#loop-start').offset().top)
    }
  else if ( $(document).scrollTop() <= loopstart - 1 ) {
    $(document).scrollTop($('#loop-end').offset().top)
    }
    
});
         }
});

问题是这个函数在调整窗口大小时会中断,我想知道是否有一种简单的方法来重新计算偏移值?或者最好让它以更灵敏的方式计算偏移量?

【问题讨论】:

    标签: javascript jquery scroll offset


    【解决方案1】:

    您可以在每次调整窗口大小时使用jQuery resize event 重新计算循环变量。

    $(window).resize(function() {
      // your function
    });
    

    【讨论】:

    • 对。但是,我会复制该事件中的变量吗?我已经尝试过了,它使它适用于前向循环......但它打破了后向循环。什么是最佳实践?当我调整窗口大小时,它也感觉非常缓慢,那是因为事件会触发每个移动的像素?可以延迟某种形式吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多