【发布时间】:2013-05-23 09:39:26
【问题描述】:
我正在创建的网站有一个框,里面有多个可滚动的框。 还有一个图像,需要在用户滚动的同时向下滚动。
我使用滚动事件进行这项工作,每次滚动 div 时,我都会将顶部位置(跟随页面向下的元素)更改为包含 div 的 scrollTop。
问题是,有时元素似乎会闪烁然后又回到正确的位置。
我认为这与滚动事件没有触发每个滚动的像素有关,但我不确定。
我在 jsfiddle 上有一个非常简单的示例,因此您可以看到问题的实际效果:http://jsfiddle.net/DYqqA/34/
JS:
jQuery('#pageWrap').scroll(function(){
jQuery('#follow').css({
top: jQuery(this).scrollTop() + 20
});
});
jQuery('.move').click(function(){
jQuery('#pageWrap').animate({
scrollTop: jQuery('.page').height() * jQuery('.page').length
}, 4000);
});
HTML:
<div id="scroll">
<a href="#" class="move">Move</a>
<div id="pageWrap">
<div id="follow"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
<div class="page"></div>
</div>
</div>
【问题讨论】:
-
另一种解决方案是让您的图像固定,然后您不需要重新计算它在滚动时的位置,而是在浏览器调整大小时。
-
位置固定的问题是当用户将鼠标悬停在固定的元素上时,他们无法滚动,因为固定位置是相对于窗口而不是相对父级。
-
@TheoKouzelis 这发生在 Firefox 中,但不像其他浏览器那样频繁,例如 Chrome 和 IE。
标签: jquery html css animation scroll