提问人:Vladikslavus 提问时间:11/4/2023 最后编辑:Vladikslavus 更新时间:11/5/2023 访问量:29
单击时如何停止动画并将其返回到第一帧?
How to stop animation when click and return it to the 1st frame?
问:
我有一个这样的css:
#turbo_fire {
transform-box: fill-box;
position: absolute;
animation-name: burning;
animation-duration: .005s;
animation-direction: alternate;
animation-iteration-count: infinite;
animation-timing-function: linear;
transform-origin: center center;
}
.burning-pause {
animation-play-state: paused;
}
.burning-run {
animation-play-state: running;
}
我还有我的 JS 代码,可以监听事件并在 和 类之间切换。ckick
.burning-pause
.burning-run
prop 只有两种状态,例如 和 。所以它没有任何停止动画值。animation-play-state
pause
running
那么问题来了,当动画停止并返回到第一帧时,如何停止动画呢?click
答:
2赞
Mister Jojo
11/5/2023
#1
在第一个位置重置动画没有真正的问题。
我想知道你给自己设置了什么样的困惑,——因为这不是问题,
——而且你没有花任何时间回答我的评论;哪怕只是一个“不”。
const btn =
{ Xanim : document.querySelector('#btn-anim')
, Xpause : document.querySelector('#btn-pause')
, Xrun : document.querySelector('#btn-run')
, Xreset : document.querySelector('#btn-reset')
}
setBtnsOff( false,true,true,true );
btn.Xanim.onclick =_=>
{
bob.classList.add('anim');
setBtnsOff( true,false,true,false );
}
btn.Xpause.onclick =_=>
{
bob.classList.remove('movin-run');
bob.classList.add('movin-pause');
setBtnsOff(true,true,false,false);
}
btn.Xrun.onclick =_=>
{
bob.classList.replace('movin-pause','movin-run');
setBtnsOff(true,false,true,false);
}
btn.Xreset.onclick =_=>
{
bob.classList.remove('anim','movin-pause','movin-run');
setBtnsOff( false,true,true,true );
}
function setBtnsOff( x_anim, x_pause, x_run, x_reset )
{
btn.Xanim .disabled = x_anim;
btn.Xpause.disabled = x_pause;
btn.Xrun .disabled = x_run;
btn.Xreset.disabled = x_reset;
}
#bob {
margin : 20px;
width : 100px;
height : 100px;
background : darkorange;
border-radius : 50px;
}
.anim {
animation-name : movin;
animation-duration : 2s;
animation-timing-function : linear;
animation-iteration-count : infinite;
}
@keyframes movin {
0% { transform: translateX(0); }
50% { transform: translateX(300px); }
100% { transform: translateX(0); }
}
.movin-pause {
animation-play-state: paused;
}
.movin-run {
animation-play-state: running;
}
button { width : 5em; }
<button id="btn-anim" > mov it </button>
<button id="btn-pause" > pause </button>
<button id="btn-run" > run </button>
<button id="btn-reset" > reset </button>
<div id="bob"></div>
评论
0赞
Vladikslavus
11/5/2023
这真的很简单。看来我:)过度劳累了那是因为我没有将动画放在单独的类中来切换它。现在一切正常。无论如何,谢谢身体:)
0赞
Vladikslavus
11/5/2023
别担心,伙计。正如你问的那样,我接受了你的回答作为我问题的解决方案:)
评论