MINECRAFT首页上的数字跳动更新的效果是怎么做到的?

2012-04-11 13:54:14 +08:00
 xavierskip
http://www.minecraft.net/
那个有多少玩家注册以及多少玩家玩过这个游戏的数字在变动的时候,
就是跳动的效果具体是怎么实现的?
4071 次点击
所在节点    JavaScript
3 条回复
est
2012-04-11 17:00:47 +08:00
javascript setInterval
zxwind
2012-04-11 17:50:43 +08:00
跳动是用animate设置css的位置属性实现的,就是下面这个函数

var countTo = function(el, val) {
if (el.text().length != val.length) {
el.text(val);
el.css('width', el.width() + 'px').css('display', 'inline-block');
return false;
}
var digits = el.text().split('');
el.css('width', el.width() + 'px').css('display', 'inline-block');
el.html("");
var offset = new Array();
var digitEles = new Array();
for (i in digits) {
var digit = $("<span></span>").text(digits[i]).appendTo(el);
offset.push(digit.position().left);
digitEles.push(digit);
}
for (i in digitEles) {
digitEles[i].css({
top: 0,
left: offset[i] + "px",
position: 'absolute'
})
}
var newDigits = val.split('');
for (i in newDigits) {
if (newDigits[i] != digits[i]) {
var newDigit = $('<span></span>').text(newDigits[i]).appendTo(el);
newDigit.css({
top: "-10px",
left: offset[i] + "px",
position: 'absolute'
});
newDigit.animate({
top: '+=10',
opacity: 1.0
}, 200), function() {
el.html(val)
};
digitEles[i].animate({
top: '+=10',
opacity: 0.0
}, 200, function(){
$(this).remove()
});
}
}
//$($('.total_users span')[4]).animate({top: '-=15', opacity: 1.0 },500, function(){$(this).remove()});
}
xavierskip
2012-04-11 19:01:12 +08:00
@est 谢谢,我去查查。

@zxwind 哦,感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/31968

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX