Я использую API веб-анимации для создания простой анимации, поэтому что, когда пользователь перемещает мышь на target
, анимация должна начинаться слева направо, а когда пользователь перемещает мышь с target
, анимация должна быть обратной, а target
должен двигаться справа налево.
В настоящее время, если пользователь перемещает мышь внутрь / наружу во время анимации, анимация будет прерывистой, и у меня нет плавного эффекта.
Хотелось бы узнать, как решить эту проблему.
Примечание. В настоящее время я использую API веб-анимации. Но та же проблема возникает при использовании анимации ключевых кадров CSS.
Я также попытался решить эту проблему, используя следующее решение, которое улучшило ситуацию, но это все еще проблематично. Вот живой пример https://jsfiddle.net/x784xwoa/5/
var elm = document.getElementById("target");
var player = document.getElementById("target");
elm.addEventListener('mouseover', function(event) {
console.log('mouseover', player.playState, 'animate');
player = elm.animate(
[{
left: "0px",
boxShadow: 'rgba(0, 0, 0, 0.5) 0px 0px 0px 0px'
}, {
left: "100px",
boxShadow: 'rgba(0, 0, 0, 0.9) 50px 150px 100px 0px'
}], {
duration: 3000,
direction: "normal",
fill: "forwards",
iterations: 1
}
);
});
elm.addEventListener('mouseout', function(event) {
console.log('mouseout', player.playState, 'reverse');
player.reverse();
});
#target {
position: relative;
top: 0;
left: 0;
width: 100px;
height: 150px;
background-color: red;
}
<div id="target"></div>