如何用纯CSS方式实现CSS动画的暂停与播放效果?animation-play-state属性介绍(详解)

使用纯 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';    }    });

效果图(播放时和停止播放后):

1.jpg2.jpg

纯 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;    }}.stop:hover ~ .animation {    animation-play-state: paused;}

效果图:

1.jpg2.jpg

当然,这个方法不够智能,如果释放鼠标的自由,点击一下暂停、再点击一下播放就好了。还有其他方法吗?

checked 伪类实现

之前的文章《有趣的 CSS 题目(8):纯CSS的导航栏Tab切换方案》也谈过,使用 radio 标签的 checked 伪类,加上 实现纯 CSS 捕获点击事情。

并且利用被点击的元素可以控制一些 CSS 样式。实现如下:

html代码:

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 属性。

效果图:

1.jpg2.jpg

上面的示例中,实现了纯 CSS 方式实现 CSS 动画的暂停与播放。

当然,还有一些其他方法,例如 radio 替换成 checkbox ,或者使用 :target 伪类选择器也能实现上面同样的效果,感兴趣的可以尝试一下。

以上就是如何用纯CSS方式实现CSS动画的暂停与播放效果?animation-play-state属性介绍(详解)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1611830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 02:35:19
下一篇 2025年12月24日 02:35:32

相关推荐

  • css3如何区分background-clip和background-origin ?(代码实例)

    本章给大家介绍css3如何区分background-clip和background-origin?(代码实例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在css3中,background-clip和background-origin它们2个的功能大致相同,但又有些细微差别。 …

    2025年12月24日
    000
  • css3颜色渐变:css3如何实现背景颜色渐变?

    为了开发网页的美观,css3背景颜色渐变是经常会用到的,那么,css3背景颜色渐变如何设置呢?本篇文章我们就来介绍关于css颜色渐变背景的设置方法。 我们要知道的是css3渐变有两种类型:css3线性渐变和css3径向渐变,下面我们就来看一下这两种css3渐变实现背景颜色渐变的效果是怎样的。 一、c…

    2025年12月24日
    000
  • 你不知道的CSS3目标伪类选择器target(代码实例解析)

    最近在梳理css的知识,发现了很多知识盲区,归根结底还是以前学习的时候低估了css,认为它太简单,应该把重点放在js上面。今天就分享一个实用的css3小知识,即css3:target选择器,还可以用css3:target做一个类似tab的切换效果。相信很多人应该也不熟悉这是属性吧。那继续往下看吧。 …

    2025年12月24日 好文分享
    000
  • 如何使用纯CSS实现悬停时右移的按钮效果(附源码)

    本篇文章给大家带来的内容是关于如何使用纯css实现悬停时右移的按钮效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom…

    2025年12月24日
    000
  • css3-动画(animation)效果的实现

    本章给大家介绍css3-动画(animation)效果的实现,让大家了解一个简单的css3动画是如何实现的。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 css3-动画(animation): 具有以下属性: 1、animation-name 自定义动画名称2、animation-…

    2025年12月24日
    000
  • ​CSS3如何实现字体抗锯齿渲染效果?-webkit-font-smoothing属性(实例)

    本章给大家介绍css3如何实现字体抗锯齿渲染效果?-webkit-font-smoothing属性(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 对字体进行抗锯齿渲染可以使字体看起来会更清晰舒服。在图标字体成为一种趋势的今天,抗锯齿渲染使用也越来越多。 font-smoot…

    好文分享 2025年12月24日
    000
  • CSS3中的calc()是什么?calc()怎么使用呢?

    很多人都不知道calc()是什么,那今天就来学习calc(),学习之前我们有必要先知道calc()是什么?只有知道了他是个什么东西?在实际运用中才能更好的使用他。那接下来就围绕calc()展开。 calc()是什么? calc()从字面我们可以把他理解为一个函数function。其实calc是英文单…

    好文分享 2025年12月24日
    000
  • css3如何实现过渡动画的效果?css3过渡效果的实现方法

    有时候我们在网页中可能会看到这样的效果,当鼠标放到某些文字或图像上的时候会发生一些变化,这其实就是过渡,这么说来比较抽象,那么,下面就来介绍一下关于css3实现过渡的动画效果。 css3实现过渡是离不开transition属性的,transition是网页上的过渡动画,变化的逐渐过渡效果,简称过渡动…

    2025年12月24日
    000
  • css3如何设置边框颜色渐变?css3边框颜色渐变的两种实现方法

    很多时候在开发网页的时候,可能因为一些原因需要为边框设置颜色渐变,那么该如何设置颜色边框渐变?本篇文章将为大家介绍使用css3设置边框颜色渐变的方法。 我们设置边框颜色渐变时可以用到css3中的属性是border-image或者border-colorcss3边框颜色渐变,那么两个属性如何设置边框颜…

    2025年12月24日
    000
  • css3图片旋转如何实现?css3实现图片旋转动画效果的方法

    在网页中,我们经常可以看到一张图片在旋转,这样的图片旋转是怎么来实现的呢?本篇文章就来为你介绍一下关于css3实现图片旋转动画效果的方法。 实现css3中图片的旋转可以使用可以使用 -webkit-animation 和 @-webkit-keyframes 组合使用来完成。 -webkit-ani…

    好文分享 2025年12月24日
    000
  • CSS3中有哪些伪类选择器, 伪类选择器nth-child() 怎么使用

    css3中新的属性给我们带来了不少的便利,比如伪类选择器 nth-child(),但是它在ie6-8和ff3.0-浏览器不支持,css3中nth-of-type(n)(比如nth-of-type(1))这个特殊的类选择符可以设置更加个性的标题和段落等,不过,目前nth-of-type(n)只支持火狐…

    好文分享 2025年12月24日
    000
  • 如何使用CSS和GSAP实现有多个关键帧的连续动画(附源码)

    本篇文章给大家带来的内容是关于如何使用css和gsap实现有多个关键帧的连续动画(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定…

    2025年12月24日
    000
  • css3新特性有哪些?css3新特性的总结

    本篇文章给大家带来的内容是css3新特性有哪些?css3新特性的总结 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 什么是CSS? 层叠样式表(CSS)是一种向Web文档添加样式(例如,字体,颜色,间距)的简单机制。 什么是CSS3? CSS3是CSS语言的最新发展,旨在扩展CS…

    2025年12月24日
    000
  • 如何使用纯CSS实现一只会动的手(附源码)

    本篇文章给大家带来的内容是关于如何使用纯css实现一只会动的手(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom,容器中…

    2025年12月24日
    000
  • 深入理解CSS3中transition的使用方法

    可以让动画在css层面实现,此时不是利用setinterval(),不是定时器,而是底层c++在渲染,渲染动画的质量、丝滑程度都要远远优于js、jquery。 要颠覆我们传统制作网页动画的思维模式,现在的手机页面中,绝对不会有任何动画是setInterval()完成的,而都是过渡实现的。今后2~3年…

    好文分享 2025年12月24日
    000
  • 10个常用的CSS3知识分享

    随着时代的发展,前端知识也一直在更新,目的是让用户体验更好,工作效率变高。css3的出现,让我们可以通过简便的方式,做出更多炫酷的效果,工作中整理了10个常用的css3属性,欢迎参考。 1、文本效果 阴影:text-shadow:X偏移 Y偏移 模糊程度 阴影颜色; text-shadow: 5px…

    好文分享 2025年12月24日
    000
  • 如何使用css3实现魔方的动画效果(完整代码)

    本篇文章给大家带来的内容是关于如何使用css3实现魔方的动画效果(完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Document *{ margin: 0; padding: 0; } .box{ width: 300px; height: 300px; margin:…

    好文分享 2025年12月24日
    000
  • 如何使用纯CSS实现一把剪刀的效果(附源码)

    本篇文章给大家带来的内容是关于如何使用纯css实现一把剪刀的效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果预览 源代码下载 https://github.com/comehope/front-end-daily-challenges 代码解读 定义 dom,容器…

    2025年12月24日
    000
  • CSS3中​linear-gradient属性的使用方法总结

    本篇文章给大家带来的内容是关于css3中linear-gradient属性的使用方法总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 linear-gradient 是CSS3中一个重要的属性,初看觉得很简单,但是别看它简单,它能实现很多复杂的图形。 代码还是比较简单的: lin…

    2025年12月24日
    000
  • css3中什么是多列布局?columns属性的介绍(实例)

    本章给大家带来css3中什么是多列布局?columns属性的介绍(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、什么是多列布局? CSS3中新出现的多列布局(multi-column)是传统HTML网页中块状布局模式的有力扩充。这种新语法能够让WEB开发人员轻松的让文本…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信