target
でマウスを動かすと、アニメーションは左から右に移動し、ユーザーがtarget
からマウスを動かすように単純なアニメーションを作成するためにWeb Animation APIを使用していますアニメーションは逆になり、target
は右から左に移動する必要があります。マウスオーバーとマウスアウトを使用するときのぎこちないアニメーションの回避
現在のところ、ユーザーがアニメーション中にマウスを出し入れすると、アニメーションがぎくしゃくしていて、滑らかな効果がありません。
この問題を解決する方法を知りたいと思います。
注:現在、私はWeb Animation APIを使用しています。しかし、CSS Keyframe Animationを使用する場合にも同じ問題が発生します。
私はまた、次の解決策を使用してこの問題を解決しようとしましたが、状況を改善しましたが、それでも問題はあります。ここでは実際の例では、私はいつものMouseEnter/mouseleaveではなく、マウスオーバー/マウスアウトを使用して成功を収めてきた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>
更新されたcodepenに気付いているジャーキネスは何ですか?現在のところ、ChromeとFirefoxの両方で、追加アニメーション(Web Animationsの一部)が実装されています。これにより、アニメーションをスムーズに別のアニメーションに変更できるようになります。 – brianskold