纯 CSS 实现
下面我们探讨下,使用纯 CSS 的方式能否实现。hover 伪类实现
使用 hover 伪类,在鼠标悬停在按钮上面时,控制动画样式的暂停。
关键代码如下:
<div class="btn stop">stop</div>
<div class="animation"></div><style>
.stop:hover ~ .animation { animation-play-state: paused;}</style>Demo -- 纯 CSS 方式实现 CSS 动画的暂停与播放 (Hover):
当然,这个方法不够智能,如果释放鼠标的自由,点击一下暂停、再点击一下播放就好了。还有其他方法吗?
checked 伪类实现
之前的文章《谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案》也谈过,使用 radio 标签的 checked 伪类,加上 <label for> 实现纯 CSS 捕获点击事情。
并且利用被点击的元素可以控制一些 CSS 样式。实现如下:
<input id="stop" type="radio" name="playAnimation" />
<input id="play" type="radio" name="playAnimation" /><div class="box">
<label for="stop"> <div class="btn">stop</div> </label> <label for="play"> <div class="btn">play</div> </label></div><div class="animation"></div>
部分关键 CSS 代码:.animation {
animation: move 2s linear infinite alternate;}#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 属性。