所以对于最后几天天,我正在努力让这个工作。尽管一些SO成员已经帮助了我很多,但我仍然觉得我走错了路,因为我无法让它发挥作用。
这是Fiddle。
基本上,我想根据滚动位置动态地将.show
类添加/删除到.container
内的图像。在发布的示例中,我只是尝试向下滚动。
如果你滚动得很轻,慢慢地看到它确实有效,但速度太快 - 那就是问题
我的想法是定义类似于阈值的东西,必须在某些事情发生之前滚动,但不知何故我没有得到理想的结果。
此外,scroll
事件似乎在浏览器中不常触发,因此我不知道如何使用它进行平滑的移动/转换。我已经看过教程中的一些示例代码,并且似乎总是有用!为什么不用我的例子呢?它与我的CSS有关吗?
请帮助我,我现在真的很沮丧。
例如,选择that tutorial page并查看来源。有一个名为ScrollCount
的变量,每次运行该函数时都会递增。当ScrollCount
达到3时,一些动画内容完成,ScrollCount
重置为1.这样,根据评论,每三个像素滚动一下,鸟的翅膀就会改变。
但是根据我的代码的观察结果,这不可能是真的,因为触发函数的scroll
事件似乎或多或少地随机发生 - 滚动得越快,越多像素被“跳过” “ - 至少我的代码,所以有些事情是错误的。
答案 0 :(得分:4)
将动画元素与滚动事件的数量联系起来会产生不一致的结果。在样本page you linked上,动画与绝对滚动位置和滚动事件数量相关联,这可能会产生一些奇怪的结果。
滚动视图有很多种不同的方法,所有这些方法都会产生不同数量的滚动事件和滚动距离。
然后根据浏览器,所有这些行为可能会有所不同。
总之?将动画绑定到滚动事件的数量对我来说听起来不错。相反,为什么不把它绑在滚动位置?
function animateHorse() {
var currentScrollPosition = window.pageYOffset;
var imageIndex = Math.round(currentScrollPosition / scrollResolution);
if (imageIndex >= pictureCount) {
imageIndex = pictureCount - 1; // Select last image
}
$("#container img").hide();
$("#container img").eq(imageIndex).show();
}
答案 1 :(得分:0)
这是工作演示,你可以看到马动画......
onload = function startAnimation() {
var frames = document.getElementById("animation").children;
var frameCount = frames.length;
var i = 0;
setInterval(function() {
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
}, 100);
}

#animation img {
display: none;
}
#animation img:first-child {
display: block;
}

<div id="animation">
<img src="http://s23.postimage.org/t57meexkb/horse_1.png" class="animated" />
<img src="http://s23.postimage.org/i86apnasr/horse_2.png" class="animated" />
<img src="http://s23.postimage.org/6kc8v3lnv/horse_3.png" class="animated" />
<img src="http://s23.postimage.org/w4ej1j71n/horse_4.png" class="animated" />
<img src="http://s23.postimage.org/ddclrdch7/horse_5.png" class="animated" />
<img src="http://s23.postimage.org/nbxkdulwr/horse_6.png" class="animated" />
<img src="http://s23.postimage.org/phrv8cpd7/horse_7.png" class="animated" />
<img src="http://s23.postimage.org/n1un88wob/horse_8.png" class="animated" />
<img src="http://s23.postimage.org/9yz0oz6gb/horse_9.png" class="animated" />
<img src="http://s23.postimage.org/6gn0sl5kb/horse_10.png" class="animated" />
<img src="http://s23.postimage.org/vnxwsu8ob/horse_11.png" class="animated" />
<img src="http://s23.postimage.org/bhuetyd0r/horse_12.png" class="animated" />
<img src="http://s23.postimage.org/imc82zka3/horse_13.png" class="animated" />
<img src="http://s23.postimage.org/auvi4fg4r/horse_14.png" class="animated" />
</div>
&#13;