【发布时间】:2013-01-30 11:29:48
【问题描述】:
我正在寻找帮助/指向正确方向的点/或在循环/无限网站上滚动时出现闪烁/跳转的解决方案,可以在 this fiddle 中看到。
似乎是什么导致了跳跃:
“$(window).scrollTop(half_way - child_height);”,也可能是 Chrome 窗口的 scrollTop 错误,但目前所有浏览器都在发生。
如果我删除“- child_height”,则不再有闪烁但页面不再正确滚动,这可以在this fiddle 中看到。
此外,在第一次滚动时,右侧的列向上跳了三个框 - 也是因为“half_way”,我可以通过给它一个“bottom: -600px;”来解决这个问题
完整代码:
http://jsfiddle.net/djsbaker/j3d8r/1/
var num_children = $('#up-left').children().length;
var child_height = $('#up-left').height() / num_children;
var half_way = num_children * child_height / 2;
$(window).scrollTop(half_way);
function crisscross() {
$('#up-left').css('bottom', '-' + window.scrollY + 'px');
$('#down-right').css('bottom', '-' + window.scrollY + 'px');
var firstLeft = $('#up-left').children().first();
var lastLeft = $('#up-left').children().last();
var lastRight = $('#down-right').children().last();
var firstRight = $('#down-right').children().first();
if (window.scrollY > half_way ) {
$(window).scrollTop(half_way - child_height);
lastRight.appendTo('#up-left');
firstLeft.prependTo('#down-right');
} else if (window.scrollY < half_way - child_height) {
$(window).scrollTop(half_way);
lastLeft.appendTo('#down-right');
firstRight.prependTo('#up-left');
}
}
$(window).scroll(crisscross);
【问题讨论】:
-
为避免闪烁,您需要 i) 克隆您正在修改的父元素。 ii) 修改克隆版本 iii) 用修改后的克隆版本替换原始版本。抱歉,实际上无法让它在小提琴中工作。 (作为第一步,您需要从使用 ID 更改为使用类。)
-
啊,好的,非常感谢。我尝试使用克隆,这是我第一次使用它,但在删除它们时遇到了问题。我会再试一次。
标签: javascript jquery html infinite-scroll