我使用Web Animation API來創建一個簡單的動畫,以便當用戶在target
上移動鼠標時,動畫應從左向右開始,當用戶將鼠標從target
,動畫應該顛倒過來,target
應該從右向左移動。使用鼠標懸停和鼠標移動時避免生澀的動畫
當前,如果用戶在動畫過程中將鼠標移入/移出,動畫會變得不穩定,並且我沒有平滑的效果。
我想知道如何解決這個問題。
注意:目前我正在使用Web動畫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>
你使用更新的codepen注意到了什麼?目前,Chrome和Firefox都在實施加法動畫(Web動畫的一部分),這將允許您製作一個可以平滑過渡到另一個的動畫。 – brianskold