p {
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
对于上面的动画CSS代码,我想知道是否有任何方法可以将margin-left
和width
的值作为Javascript中的参数传递。
答案 0 :(得分:9)
使用CSS变量,您可以轻松地执行此操作:
document.querySelector('.p2').style.setProperty('--m','100%');
document.querySelector('.p2').style.setProperty('--w','300%');

.p1,.p2 {
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein {
from {
margin-left: var(--m, 0%);
width: var(--w, 100%);
}
to {
margin-left: 0%;
width: 100%;
}
}

<p class="p1">
This will not animate as the animation will use the default value set to the variable
</p>
<p class="p2">
This will animate because we changed the CSS variable using JS
</p>
&#13;
答案 1 :(得分:-1)
也许另一种方法是使用:Element.animate()
var m = "100%";
var w = "300%";
document.getElementsByClassName('p2')[0].animate([{
marginLeft: m,
width: w
},
{
marginLeft: '0%',
width: '100%'
}
], {
duration: 2000,
});
<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>
<body>
<p class="p1">
This will not animate as the animation will use the default value set to the variable
</p>
<p class="p2">
This will animate because we changed the CSS variable using JS
</p>
</body>
</html>