我有一个动画,根据页面上的滚动位置显示8种可能的帧之一。每次你滚动20px,下一帧就会显示,直到你到达第8帧,然后在160px后回到第1帧。目前,如果页面是2000px长,我需要100个if语句,这似乎很荒谬。必须有一种方法,使它变成几行使用一个漂亮的函数使用循环。一个朋友说这将是一个'mod'的工作,但显然javascript不能做mod或余数。
我在下面做了一个脚本的摘录,但是你可以在这里看到整个想法
http://jsfiddle.net/jimmytheman/NnFmn/2/function scroll() {
if (window.pageYOffset < 20){
setTimeout("document.images['ball'].src=imageArray[0].src",0);
}
else if (window.pageYOffset < 40){
setTimeout("document.images['ball'].src=imageArray[1].src",0);
}
else if (window.pageYOffset < 60){
setTimeout("document.images['ball'].src=imageArray[2].src",0);
}
else if (window.pageYOffset < 80){
setTimeout("document.images['ball'].src=imageArray[3].src",0);
}
你可以在javascript中使用模数它是%
字符,http://jsfiddle.net/NnFmn/4/
但是你可以这样缩短代码:
function scroll() {
setTimeout(function() {
document.images['ball'].src = imageArray[window.pageYOffset % 7].src;
}, 0);
return false;
}
http://jsfiddle.net/NnFmn/5/