怎么使css动画停⽌,如何⽤纯CSS⽅式实现CSS动画的暂停与
播放效果?animation。。。
使⽤纯 CSS 的⽅法,暂停或播放 CSS 动画。是不是看起来应该是不可能的实现的;或者就算可以实现,也是⼀个很⿇烦的实现⽅法,需要⽤⼤量的css样式才可以实现。其实不然,在 CSS3 animation 中,就有这样⼀个属性可以做到暂停、播放动画。本章就给⼤家介绍如何⽤纯CSS⽅式实现CSS动画的暂停与播放效果?animation-play-state属性介绍(详解)。有⼀定的参考价值,有需要的朋友可以参考⼀下,希望对你有所帮助。
animation-play-state属性animation-play-state: paused | running;
animation-play-state: 属性定义⼀个动画是否运⾏或者暂停。可以通过查询它来确定动画是否正在运⾏。另外,它的值可以被设置为暂停和恢复的动画的重放。
如果借助 Javascript,我们可以实现控制 CSS 动画的运⾏和播放,下⾯列出部分关键代码:
html代码:
stop
css代码:.animation {
width: 100px;
height: 100px;
margin: 50px auto;
background: deeppink;
animation: move 2s linear infinite alternate;
}
@keyframes move {
0% {
transform: translate(-100px, 0);
}
100% {
transform: translate(100px, 0);
}
}
.btn {
width: 50px;
margin: 10px auto;
text-align: center;
border:1px solid #ddd;
padding: 10px;
border-radius: 5px;
cursor:pointer;
&:hover {
background: #ddd;
color: #333;
}
&:active {
background: #aaa;
}
}
js代码:document.querySelector('.btn').addEventListener('click', function() { let btn = document.querySelector('.btn');
let elem = document.querySelector('.animation');
let state = elem.style['animationPlayState'];
if(state === 'paused') {
elem.style['animationPlayState'] = 'running';
btn.innerText = 'stop';
} else {
elem.style['animationPlayState'] = 'paused';
btn.innerText = 'play';
}
});
效果图(播放时和停⽌播放后):
纯 CSS 实现
下⾯我们探讨下,使⽤纯 CSS 的⽅式能否实现。
hover 伪类实现
使⽤ hover 伪类,在⿏标悬停在按钮上⾯时,控制动画样式的暂停。
关键代码如下:
html代码:
stop
css代码:.animation {
width: 100px;
height: 100px;
margin: 50px auto;
background: deeppink;
animation: move 2s linear infinite alternate; }
input {
display: none;
}
@keyframes move {
0% {
transform: translate(-100px, 0);
}
100% {
transform: translate(100px, 0);
}
}
.btn {
width: 50px;
margin: 10px auto;
text-align: center;
border:1px solid #ddd;
padding: 10px;
border-radius: 5px;
cursor:pointer;
&:hover {
background: #ddd;
color: #333;
}
&:active {
background: #aaa;
}
margin属性怎么用
}
.stop:hover ~ .animation {
animation-play-state: paused;
}
效果图:
当然,这个⽅法不够智能,如果释放⿏标的⾃由,点击⼀下暂停、再点击⼀下播放就好了。还有其他⽅法吗?
checked 伪类实现
之前的⽂章《有趣的 CSS 题⽬(8):纯CSS的导航栏Tab切换⽅案》也谈过,使⽤ radio 标签的 checked 伪类,加上 实现纯 CSS 捕获点击事情。
并且利⽤被点击的元素可以控制⼀些 CSS 样式。实现如下:
html代码:
stop play
css代码:.animation {
width: 100px;
height: 100px;
margin: 50px auto;
background: deeppink;
animation: move 2s linear infinite alternate;
}
input {
display: none;
}
@keyframes move {
0% {
transform: translate(-100px, 0);
}
100% {
transform: translate(100px, 0);
}
}
.btn {
width: 50px;
margin: 10px auto;
text-align: center;
border:1px solid #ddd;
padding: 10px;
border-radius: 5px;
cursor:pointer;
&:hover {
background: #ddd;
color: #333;
}
&:active {
background: #aaa;
}
}
#stop:checked ~ .animation {
animation-play-state: paused;
}
#play:checked ~ .animation {
animation-play-state: running;
}
我们希望当 #stop 和 #play 两个 radio 被点击时,给 .animation 元素分别赋予 animation-play-state: paused 或是 animation-play-state: running 。⽽且⼆者只能⽣效其⼀,所以需要给两个 radio 标签赋予相同的 name 属性。
效果图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。