Javascript 如何在CSS中实现数字增量动画
我试着创建一个类似于Twitter上类似帖子的计数器的动画 我想达到同样的效果/动画效果。我对如何实现动画感到困惑 以下是我到目前为止在jQuery中所做的工作:Javascript 如何在CSS中实现数字增量动画,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我试着创建一个类似于Twitter上类似帖子的计数器的动画 我想达到同样的效果/动画效果。我对如何实现动画感到困惑 以下是我到目前为止在jQuery中所做的工作: $(函数(){ var$number=1; $(“#测试”)。单击(函数(){ var$elem=$(this.find('span'); var$text=$(this.find('span').text(); $number=$number+1; setTimeout(函数(){ $(this).find('span').re
$(函数(){
var$number=1;
$(“#测试”)。单击(函数(){
var$elem=$(this.find('span');
var$text=$(this.find('span').text();
$number=$number+1;
setTimeout(函数(){
$(this).find('span').removeClass(“static”).addClass(“up”);
}, 0);
setTimeout(函数(){
$elem.text($number);
}, 100);
setTimeout(函数(){
$elem.removeClass(“向上”).addClass(“向下”);
}, 100);
setTimeout(函数(){
$elem.removeClass(“down”).addClass(“static”);
}, 200);
});
});代码>
.up{
显示:内联flex;
不透明度:0;
变换:translate3d(0,-20px,0);
转换:0.1s易入易出;
}
.下来{
显示:内联flex;
不透明度:0;
转换:translate3d(0,20px,0);
}
.静态{
显示:内联flex;
不透明度:1;
变换:translate3d(0,0px,0);
转换:0.1s易入易出;
}
1
您的代码引发异常:
未捕获类型错误:$text.removeClass不是函数
您将$text
定义为
var$text=$(this.find('span').text();
因此,它是一个普通字符串,这就是为什么$text.removeClass()
无法工作的原因
你可能是想写信
$elem.removeClass(…)
您的代码引发异常:
未捕获类型错误:$text.removeClass不是函数
您将$text
定义为
var$text=$(this.find('span').text();
因此,它是一个普通字符串,这就是为什么$text.removeClass()
无法工作的原因
你可能是想写信
$elem.removeClass(…)
您的代码有两个问题:
如所述,您已将$text
而不是$elem
放置在一个设置超时
中。这是一个直截了当的打字错误
第二个问题是线路:
$(this.find('span').removeClass(“static”).addClass(“up”);
在setTimeout
内部,this
变量与setTimeout
外部的this
变量不在同一上下文中。要验证这一点,您可以记录:
console.log($(this.find('span')==$elem);//应该是假的
要解决此问题,只需更换:
$(this.find('span').removeClass(“static”).addClass(“up”);
在第一次设置超时时
使用:
$elem.removeClass(“static”).addClass(“up”);
您可以在下面找到工作代码:
$(函数(){
var$number=1;
$(“#测试”)。单击(函数(){
var$elem=$(this.find('span');
var$text=$(this.find('span').text();
$number=$number+1;
setTimeout(函数(){
$elem.removeClass(“static”).addClass(“up”);
}, 0);
setTimeout(函数(){
$elem.text($number);
}, 100);
setTimeout(函数(){
$elem.removeClass(“向上”).addClass(“向下”);
}, 100);
setTimeout(函数(){
$elem.removeClass(“down”).addClass(“static”);
}, 200);
});
});代码>
.up{
显示:内联flex;
不透明度:0;
变换:translate3d(0,-20px,0);
转换:0.1s易入易出;
}
.下来{
显示:内联flex;
不透明度:0;
转换:translate3d(0,20px,0);
}
.静态{
显示:内联flex;
不透明度:1;
变换:translate3d(0,0px,0);
转换:0.1s易入易出;
}
1
您的代码有两个问题:
如所述,您已将$text
而不是$elem
放置在一个设置超时
中。这是一个直截了当的打字错误
第二个问题是线路:
$(this.find('span').removeClass(“static”).addClass(“up”);
在setTimeout
内部,this
变量与setTimeout
外部的this
变量不在同一上下文中。要验证这一点,您可以记录:
console.log($(this.find('span')==$elem);//应该是假的
要解决此问题,只需更换:
$(this.find('span').removeClass(“static”).addClass(“up”);
在第一次设置超时时
使用:
$elem.removeClass(“static”).addClass(“up”);
您可以在下面找到工作代码:
$(函数(){
var$number=1;
$(“#测试”)。单击(函数(){
var$elem=$(this.find('span');
var$text=$(this.find('span').text();
$number=$number+1;
setTimeout(函数(){
$elem.removeClass(“static”).addClass(“up”);
}, 0);
setTimeout(函数(){
$elem.text($number);
}, 100);
setTimeout(函数(){
$elem.removeClass(“向上”).addClass(“向下”);
}, 100);
setTimeout(函数(){
$elem.removeClass(“down”).addClass(“static”);
}, 200);
});
});代码>
.up{
显示:内联flex;
不透明度:0;
变换:translate3d(0,-20px,0);
转换:0.1s易入易出;
}
.下来{
显示:内联flex;
不透明度:0;
转换:translate3d(0,20px,0);
}
.静态{
显示:内联flex;
不透明度:1;
变换:translate3d(0,0px,0);
转换:0.1s易入易出;
}
1
单击时出现一些错误,请检查控制台。我看到了错误,谢谢,但为什么它会给我这个错误?您必须调试代码。代码正在运行,动画部分有任何帮助吗?您问题中的GIF不工作单击时出现一些错误,请检查控制台。我看到了错误,谢谢,但是为什么它会给我这个错误?你必须调试你的代码代码现在可以工作了,动画部分有什么帮助吗?你问题中的GIF不工作了我已经调试了代码,现在可以工作了,但是