jQuery - 出现在视口中时动画数字
jQuery - Animate numbers when appears in viewport
我目前正在尝试 当用户滚动并且 DIV 出现在视口中时为一些数字设置动画。 像这样:http://www.dimfolio.fr/
在示例中它看起来是 CSS3,出于某些原因 我更愿意使用 jQuery。
目前,我使用“animateNumber”插件和这个函数来检查 div 是否出现在视口中:
$.fn.is_on_screen = function(){
var win = $(window);
var viewport = {
top : win.scrollTop(),
left : win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
这是我的代码:
JS:
function animate_stats() {
$('.stats_number').each(function() {
if(!$(this).hasClass("numbered")) {
var thisnumber = $(this).attr('title');
$(this).animateNumber({ number: thisnumber }, 3000, function() {
$(this).addClass('numbered');
});
}
});
};
if( $('#statistics').is_on_screen() ) {
animate_stats();
}
$(window).scroll(function(){
if( $('#statistics').is_on_screen() ) {
animate_stats();
}
});
HTML:
<a href="#" class="stat">
<div class="stats_number" title="79">0</div>
<br />
My title
</a>
问题是数字动画在 div 出现时重复并再次重复。当然我希望动画只运行一次。
我想问题出在我对 "each" 函数的使用上,但请注意。
有人可以帮忙吗?非常感谢!
动画完成后运行,移除监听器
$(window).on('scroll.animateStats', function(){
if( $('#statistics').is_on_screen() ) {
animate_stats();
$(window).off('scroll.animateStats');
}
});
我为滚动事件命名空间,这样当我们删除它时,我们只删除这个事件处理程序,而不是所有 个滚动处理程序。
我目前正在尝试 当用户滚动并且 DIV 出现在视口中时为一些数字设置动画。 像这样:http://www.dimfolio.fr/
在示例中它看起来是 CSS3,出于某些原因 我更愿意使用 jQuery。
目前,我使用“animateNumber”插件和这个函数来检查 div 是否出现在视口中:
$.fn.is_on_screen = function(){
var win = $(window);
var viewport = {
top : win.scrollTop(),
left : win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
这是我的代码:
JS:
function animate_stats() {
$('.stats_number').each(function() {
if(!$(this).hasClass("numbered")) {
var thisnumber = $(this).attr('title');
$(this).animateNumber({ number: thisnumber }, 3000, function() {
$(this).addClass('numbered');
});
}
});
};
if( $('#statistics').is_on_screen() ) {
animate_stats();
}
$(window).scroll(function(){
if( $('#statistics').is_on_screen() ) {
animate_stats();
}
});
HTML:
<a href="#" class="stat">
<div class="stats_number" title="79">0</div>
<br />
My title
</a>
问题是数字动画在 div 出现时重复并再次重复。当然我希望动画只运行一次。
我想问题出在我对 "each" 函数的使用上,但请注意。
有人可以帮忙吗?非常感谢!
动画完成后运行,移除监听器
$(window).on('scroll.animateStats', function(){
if( $('#statistics').is_on_screen() ) {
animate_stats();
$(window).off('scroll.animateStats');
}
});
我为滚动事件命名空间,这样当我们删除它时,我们只删除这个事件处理程序,而不是所有 个滚动处理程序。