流畅的动画停止
Smooth animation stop
选中复选框时,div
正在跳跃。当您取消选中复选框时 - div
立即移动到初始位置。
是否可以只使用CSS不使用JS顺利完成最后一个动画迭代并在之后停止?
#jumping-div {
width: 100px;
height: 100px;
margin-top: 100px;
background-color: red;
}
@keyframes jump {
0% {
transform: scaleY(1) translateY(0);
}
50% {
transform: scaleY(0.8) translateY(-70%);
}
}
#toggle:checked ~ #jumping-div {
animation-name: jump;
animation-duration: 2.0s;
animation-iteration-count: infinite;
}
<input type="checkbox" id="toggle"><label for="toggle">jump</label>
<div id="jumping-div"></div>
没有JS是不行的。
你可以用 CSS 做的是取消选中复选框动画将暂停,如果你再次选中该复选框则动画继续:
#toggle:checked ~ #jumping-div {
animation-play-state:running;
}
#jumping-div {
animation-play-state:paused;
animation-name: jump;
animation-duration: 2.0s;
animation-iteration-count: infinite;
}
如果您想完成动画,您可以使用此处讨论的 WITH JS 解决方案:
Stopping a CSS animation but letting its current iteration finish
选中复选框时,div
正在跳跃。当您取消选中复选框时 - div
立即移动到初始位置。
是否可以只使用CSS不使用JS顺利完成最后一个动画迭代并在之后停止?
#jumping-div {
width: 100px;
height: 100px;
margin-top: 100px;
background-color: red;
}
@keyframes jump {
0% {
transform: scaleY(1) translateY(0);
}
50% {
transform: scaleY(0.8) translateY(-70%);
}
}
#toggle:checked ~ #jumping-div {
animation-name: jump;
animation-duration: 2.0s;
animation-iteration-count: infinite;
}
<input type="checkbox" id="toggle"><label for="toggle">jump</label>
<div id="jumping-div"></div>
没有JS是不行的。 你可以用 CSS 做的是取消选中复选框动画将暂停,如果你再次选中该复选框则动画继续:
#toggle:checked ~ #jumping-div {
animation-play-state:running;
}
#jumping-div {
animation-play-state:paused;
animation-name: jump;
animation-duration: 2.0s;
animation-iteration-count: infinite;
}
如果您想完成动画,您可以使用此处讨论的 WITH JS 解决方案: Stopping a CSS animation but letting its current iteration finish