2017-03-04 9 views
0

CSSトランジションの一時停止と再開の方法を知りたい。マウスセンターとマウス離脱時のCSSトランジションの一時停止と再開

コードスニペット:

animationstate = "running"; 

function animate() { 
    if (animationstate == "running") { 
     deskppssystemdiv.style.transitionDuration = "2000ms"; 
     deskppssystemdiv.style.transitionTimingFunction = "linear"; 
     deskppssystemdiv.style.transform = "rotate(45deg)"; 
    } 
} 
animate(); 

deskppssystemdiv.addEventListener("mouseenter", function(event) { 
    animationstate = "paused"; 
}); 

deskppssystemdiv.addEventListener("mouseleave", function(event) { 
    animationstate = "running"; 
}); 

私は、これはgetComputedStyleプロパティまたはaddClassremoveClassで行うことができると思いますが、私はこだわっています。次のコードはいくつかのテストを行った後

+0

だから、「移行」とは何ですか?それは 'transform:rotate(Xdeg)'の程度の変化ですか?また、移行が完了した後にマウスを動かすとどうなりますか? – Harry

+0

移行が完了したら、何も起こらないはずです。トランジションは、transform:rotate(Xdeg)です。 – Juergen

+1

アニメーションがトランジションとは異なり、アニメーションに 'animation-play-state'プロパティが組み込まれているので、アニメーションの場合はこれを行う方が簡単です。しかし、アニメーションは自動的に実行されるのに対して、遷移は状態の変化があるときにのみ起こるので、アニメーションとのトランジションを常に置き換えることはできません。現在のコード(HTML、CSS、JS)を使って最小限のデモを作成することができれば、より簡単に答えることができます。 – Harry

答えて

0

は今私の作品:

var starttime=0 
var stoptime=0 
var runtime=0 
var resttime=0 
function animate(duration) 
{ 
deskppssystemdiv.style.transitionDuration=duration 
deskppssystemdiv.style.transitionTimingFunction="linear" 
deskppssystemdiv.style.transform="rotate(45deg)" 
} 
starttime=Date.now() 
animate("2000ms") 
deskppssystemdiv.addEventListener("mouseenter",function() 
{ 
stoptime=Date.now() 
runtime=runtime+(stoptime-starttime) 
resttime=2000-runtime 
deskppssystemdiv.style.transform=getComputedStyle(deskppssystemdiv). 
getPropertyValue("transform") 
}) 
deskppssystemdiv.addEventListener("mouseleave",function() 
{ 
starttime=Date.now() 
animate(resttime+"ms") 
}) 

私のアプローチは、余分な時間変数を使用することでした。 誰かがこれをうまく見つけた場合は、回答済みおよび/または投票としてマークしてください。

関連する問題