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.






Используйте переменные 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>Возможно, другой способ сделать это - использовать: 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>
Не уверен, что вы можете сделать это напрямую, но вы могли бы установить переменную css с помощью javascript, а затем использовать эту переменную в своем
@keyframes.