当用户滚动时,滚动事件会被触发很多次。对每个事件使用 animation() 并不是一个好主意,因为它会毫无意义地占用用户 CPU 资源。
这是一种解决方法:
// Help navigate!
jQuery(window).scroll(function () {
jQuery("#ease-scroll").stop(); // stop animation before anything else
if ( jQuery(window).scrollTop() >= 450 && jQuery("#ease-scroll").css("opacity") != 0.9 ) {
jQuery("#ease-scroll").animate( {opacity: 0.9}, 'medium');
}
if ( jQuery(window).scrollTop() < 450 && jQuery("#ease-scroll").css("opacity") != 0.1 ) {
jQuery("#ease-scroll").animate( {opacity: 0.1}, 'medium');
}
});
但是您应该定义一个 setTimeOut,如果需要,它会被重置以避免 CPU 无用(未经测试,可能的小语法错误:o)
// Help navigate!
var animationTimeout = null;
jQuery(window).scroll(function () {
// Clear planned animation
clearTimeout(animationTimeout);
// Define animation start after 500 ms if no others scroll events occurred
if ( jQuery(window).scrollTop() >= 450 && jQuery("#ease-scroll").css("opacity") != 0.9 ) {
animationTimeout = setTimeout(function(){
jQuery("#ease-scroll").stop();
jQuery("#ease-scroll").animate( {opacity: 0.9}, 'medium');
},500);
}
if ( jQuery(window).scrollTop() < 450 && jQuery("#ease-scroll").css("opacity") != 0.1 ) {
animationTimeout = setTimeout(function(){
jQuery("#ease-scroll").stop();
jQuery("#ease-scroll").animate( {opacity: 0.1}, 'medium');
},500);
}
});