【发布时间】:2021-07-21 12:20:25
【问题描述】:
我设法创建了一个类似于以下内容的无缝循环页面: Continuous Looping Page (Not Infinite Scroll)
但不是从页尾循环到页顶,而是在两个 div ID 内循环,此处引用的问题:Endless looping page
循环解决了这个问题: https://codepen.io/akmalmo/pen/YzNggJR
var loopend = $('#loop-end').offset().top;
var loopstart = $('#loop-start').offset().top;
$(document).scroll(function() {
if ( $(document).scrollTop() >= loopend ) {
$(document).scrollTop($('#loop-start').offset().top)
}
else if ( $(document).scrollTop() <= loopstart ) {
$(document).scrollTop($('#loop-end').offset().top)
}
});
现在解决问题!我想要实现的是在滚动到#loop-start 后调用此函数,而不是让它直接进入循环(我希望在页面加载时保留的图像上方有一些空白)。我在这里试过这个:https://codepen.io/akmalmo/pen/QWdPmER - 但这会使循环停止向一个方向工作。您仍然可以向后循环,但它会卡在向前的方向上。我错过了什么?也不能调整窗口大小,但我想这是另一个问题。
var element_position = $('#loop-init').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) {
var loopend = $('#loop-end').offset().top;
var loopstart = $('#loop-start').offset().top;
$(document).scroll(function() {
if ( $(document).scrollTop() >= loopend ) {
$(document).scrollTop($('#loop-start').offset().top)
}
else if ( $(document).scrollTop() <= loopstart ) {
$(document).scrollTop($('#loop-end').offset().top)
}
});
}
});
我几乎可以通过将一些 px 值添加到不同的状态来让它工作。如果他们有相同的位置可能是问题。它有点工作,但它有故障且不可预测:https://codepen.io/akmalmo/pen/eYgoQKd
有没有更简单的方法来完成上述操作?另外,是否有更好的方法来计算响应且不会在窗口调整大小时中断的偏移量?
【问题讨论】:
-
为什么window.scroll里面有document.scroll?
-
好收获。我已将其更改为文档。但问题仍然存在。
-
我猜滚动调用到相同的地方有冲突?
-
你可以删除一个文档滚动,因为你已经在其中了。
-
我想帮忙,但我不确定您要完成什么。您是否有一个很好的工作示例(其他地方)来说明您要实现的目标?
标签: jquery offset scrolltop portfolio endlessscroll