如何改变 css 使用变量制作动画
How change css using variables to make an animation
如何使用 JavaScript 转换 CSS 值?
我制作了这段代码,但它不起作用:
var num = 100;
function fillDiv{
var a=document.getElementById("principal");
for (var i = 0; i<100; i++){
num=num-25;
a.style.background="-moz-radial-gradient(#FFFFFF "+num+"%, #006699 200%);";
if (num==0){
break;
}
}
在调试中 window 一切正常,但是当我在元素标签上检查它时,值没有改变。
如评论中所述,for
循环太快而无法注意到效果,您可以改用 interval
,将间隔周期设置为 40
这就像 [=每秒 16=] 帧,还使步骤 10
而不是 num = num - 10;
中的 4
以便动画看起来流畅且引人注目,如下所示:
var num = 100;
var $interval = setInterval(function() {
var a = document.getElementById("principal");
num = num - 10;
if (num >= 0) {
a.style.background = '-moz-radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
a.style.background = '-webkit-radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
a.style.background = 'radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
} else {
clearInterval($interval);
}
}, 40);
body {
margin: 0;
padding: 0;
}
#principal {
width: 100vw;
height: 100vh;
display: block;
background-color: #1e69de;
margin: 0 auto;
}
<div id="principal"></div>
如何使用 JavaScript 转换 CSS 值? 我制作了这段代码,但它不起作用:
var num = 100;
function fillDiv{
var a=document.getElementById("principal");
for (var i = 0; i<100; i++){
num=num-25;
a.style.background="-moz-radial-gradient(#FFFFFF "+num+"%, #006699 200%);";
if (num==0){
break;
}
}
在调试中 window 一切正常,但是当我在元素标签上检查它时,值没有改变。
如评论中所述,for
循环太快而无法注意到效果,您可以改用 interval
,将间隔周期设置为 40
这就像 [=每秒 16=] 帧,还使步骤 10
而不是 num = num - 10;
中的 4
以便动画看起来流畅且引人注目,如下所示:
var num = 100;
var $interval = setInterval(function() {
var a = document.getElementById("principal");
num = num - 10;
if (num >= 0) {
a.style.background = '-moz-radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
a.style.background = '-webkit-radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
a.style.background = 'radial-gradient(#FFF ' + num + '%,#1e69de 200%)';
} else {
clearInterval($interval);
}
}, 40);
body {
margin: 0;
padding: 0;
}
#principal {
width: 100vw;
height: 100vh;
display: block;
background-color: #1e69de;
margin: 0 auto;
}
<div id="principal"></div>