如何通过键盘按键控制CSS动画的播放与暂停

如何通过键盘按键控制CSS动画的播放与暂停

本教程详细介绍了如何利用javascript键盘事件(keydown和keyup)来动态控制css动画的播放和暂停状态。我们将学习如何配置css动画使其无限循环并初始暂停,并通过javascript监听用户按键行为,实现按键时动画运行、松开按键时动画暂停的交互效果。

在现代网页设计中,动画是提升用户体验的重要元素。CSS动画提供了一种声明式的方式来创建复杂的动画效果,而JavaScript则能赋予这些动画更强大的交互性。本文将深入探讨如何结合CSS和JavaScript,实现通过键盘按键来精确控制动画的播放与暂停。

一、CSS动画基础与初始配置

要实现通过按键控制的动画,首先需要定义动画本身,并设置其初始状态。

1. 定义关键帧动画 (@keyframes)

使用@keyframes规则定义动画的各个阶段。每个关键帧(如0%、50%、100%)都定义了元素在该时间点的样式。

@keyframes rulle {    0%{        top: 40px;        left: 0;        transform: rotate(0deg);    }    12.5%{        top: 40px;        left: 50px;        transform: rotate(45deg);    }    25%{        top: 40px;        left: 100px;        transform: rotate(90deg);    }    37.5%{        top: 40px;        left: 150px;        transform: rotate(135deg);    }    50%{        top: 40px;        left: 200px;        transform: rotate(180deg);    }    62.5%{        top: 40px;        left: 250px;        transform: rotate(225deg);    }    75%{        top: 40px;        left: 300px;        transform: rotate(270deg);    }    87.5%{        top: 40px;        left: 350px;        transform: rotate(315deg);    }    100%{        top: 40px;        left: 250px; /* 动画结束时回到一个中间位置 */        transform: rotate(360deg);    }}@keyframes roter {    0%{ transform: rotate(0deg); }    25%{ transform: rotate(90deg); }    50%{ transform: rotate(180deg); }    75%{ transform: rotate(270deg); }    100%{ transform: rotate(360deg); }}

2. 应用动画并设置初始状态

将定义的动画应用到HTML元素上,并设置其播放属性。为了实现按键控制,我们需要:

立即学习“前端免费学习笔记(深入)”;

无限循环 (animation-iteration-count: infinite):确保动画在播放时不会只运行一次。初始暂停 (animation-play-state: paused):在页面加载时动画不自动播放。

这些属性可以通过animation缩写属性或单独的属性来设置。

#ball {    /* ... 其他样式 ... */    animation: rulle 4s infinite linear; /* 应用rulle动画,持续4秒,无限循环,线性速度 */    animation-play-state: paused;       /* 初始状态为暂停 */}#roter {    /* ... 其他样式 ... */    animation: roter 4s linear infinite; /* 应用roter动画,持续4秒,无限循环,线性速度 */    animation-play-state: paused;       /* 初始状态为暂停 */}

这里,infinite确保动画会持续播放,直到被暂停;paused则让动画在页面加载后不立即启动。

二、JavaScript事件监听与动画控制

通过JavaScript,我们可以监听用户的键盘操作,并根据按键状态来动态改变CSS动画的animation-play-state属性。

1. 监听keydown事件

当用户按下键盘上的任意键时,会触发keydown事件。我们可以在这个事件监听器中将动画的animation-play-state设置为running,从而启动动画。

2. 监听keyup事件

当用户松开键盘上的任意键时,会触发keyup事件。在这个事件监听器中,我们将animation-play-state设置回paused,从而暂停动画。

const ball = document.querySelector("#ball");const roter = document.querySelector("#roter");// 监听按键按下事件window.addEventListener("keydown", () => {    ball.style.animationPlayState = "running"; // 启动 #ball 元素的动画    roter.style.animationPlayState = "running"; // 启动 #roter 元素的动画});// 监听按键松开事件window.addEventListener("keyup", () => {    ball.style.animationPlayState = "paused"; // 暂停 #ball 元素的动画    roter.style.animationPlayState = "paused"; // 暂停 #roter 元素的动画});

这里,我们通过element.style.animationPlayState直接修改元素的内联样式,这种方式会覆盖CSS中定义的animation-play-state,从而实现动画的动态控制。

三、完整示例

下面是一个完整的HTML、CSS和JavaScript代码示例,展示了如何实现按住任意键播放动画,松开按键暂停动画的效果。

HTML结构 (index.html)

            键盘控制CSS动画        

动画元素

CSS样式 (style.css)

body {    display: flex;    justify-content: center;    align-items: center;    min-height: 100vh;    margin: 0;    background-color: #f0f0f0;    overflow: hidden; /* 防止动画溢出导致滚动条 */}.linje {    width: 1000px;    height: 500px;    border: 1px solid #ccc;    position: relative;    background-color: #fff;}#ball {    position: relative;    top: 40px;    left: 0;    width: 100px;    height: 100px;    background-color: rgb(114, 240, 214);    border-radius: 50%;    text-align: center;    line-height: 100px;    font-size: 14px;    color: #333;    display: flex;    justify-content: center;    align-items: center;    box-shadow: 0 4px 8px rgba(0,0,0,0.1);    /* 应用动画并设置初始状态 */    animation: rulle 4s infinite linear;    animation-play-state: paused;}@keyframes rulle {    0%{        top: 40px;        left: 0;        transform: rotate(0deg);    }    12.5%{        top: 40px;        left: 50px;        transform: rotate(45deg);    }    25%{        top: 40px;        left: 100px;        transform: rotate(90deg);    }    37.5%{        top: 40px;        left: 150px;        transform: rotate(135deg);    }    50%{        top: 40px;        left: 200px;        transform: rotate(180deg);    }    62.5%{        top: 40px;        left: 250px;        transform: rotate(225deg);    }    75%{        top: 40px;        left: 300px;        transform: rotate(270deg);    }    87.5%{        top: 40px;        left: 350px;        transform: rotate(315deg);    }    100%{        top: 40px;        left: 250px; /* 动画结束时回到一个中间位置 */        transform: rotate(360deg);    }}#roter {    /* #roter 元素本身的旋转动画 */    animation: roter 4s linear infinite;    animation-play-state: paused;}@keyframes roter {    0%{ transform: rotate(0deg); }    25%{ transform: rotate(90deg); }    50%{ transform: rotate(180deg); }    75%{ transform: rotate(270deg); }    100%{ transform: rotate(360deg); }}

JavaScript逻辑 (script.js)

const ball = document.querySelector("#ball");const roter = document.querySelector("#roter");// 监听按键按下事件,启动动画window.addEventListener("keydown", () => {    ball.style.animationPlayState = "running";    roter.style.animationPlayState = "running";});// 监听按键松开事件,暂停动画window.addEventListener("keyup", () => {    ball.style.animationPlayState = "paused";    roter.style.animationPlayState = "paused";});

四、注意事项与总结

animation-play-state属性:这是控制CSS动画播放/暂停的关键。通过JavaScript动态修改此属性,可以轻松实现动画的启停。animation-iteration-count: infinite:确保动画

以上就是如何通过键盘按键控制CSS动画的播放与暂停的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
html页面如何生成_动态生成HTML页面的技术与工具【技术】
上一篇 2025年12月23日 17:54:14
JavaScript中获取DOM节点X/Y位置的实用指南
下一篇 2025年12月23日 17:54:27

相关推荐

  • win10怎么关闭锁屏界面_win10禁用锁屏界面的设置教程

    1、通过组策略编辑器可禁用锁屏,适用于专业版系统;2、修改注册表添加NoLockScreen键值,适用于所有Windows 10版本;3、调整电源与睡眠设置防止因闲置自动锁屏;4、关闭屏幕保护程序及其登录要求,避免触发锁屏。重启后生效。 如果您在使用Windows 10时希望电脑不再显示锁屏界面,可…

    2026年8月29日
    000
  • win11怎么设置Windows Hello面部识别_win11面部识别登录设置步骤

    首先打开设置并进入账户的登录选项,然后选择面部识别(Windows Hello)并点击添加,验证当前PIN码或密码后,按照提示正对摄像头并在充足光线下缓慢移动头部完成面部数据录入,最后等待系统提示设置完成即可启用面部识别登录。 如果您希望使用生物识别技术快速安全地登录Windows 11系统,可以启…

    2026年8月29日
    400
  • 使用 Java 编码单词:基于字母表的字符映射教程

    本文档旨在指导开发者如何使用 Java 编程语言,根据预定义的字母表将单词编码为字符序列。我们将详细介绍实现此功能的代码,解释关键步骤,并提供示例代码,确保编码过程能够准确地保留单词的原始顺序。本教程将涵盖字符大小写处理、循环优化以及结果输出等关键方面,帮助读者掌握字符编码的核心技术。 ### 字符…

    2026年8月29日
    000
  • 剪映pc版怎么制作画中画_剪映PC版画中画效果实现

    画中画功能可通过叠加轨道添加多层画面,结合关键帧实现动态效果,或使用内置模板快速生成。 如果您希望在视频中叠加多个画面,实现主次分明的视觉效果,画中画功能是常用的创作手段。通过剪映PC版,您可以轻松将多个视频或图片层叠展示,丰富画面表现力。 本文运行环境:联想小新Pro 16,Windows 11 …

    2026年8月29日
    000
  • Potplayer如何调整字幕同步_Potplayer字幕同步调整的详细步骤

    答案:调整PotPlayer字幕同步可通过快捷键微调、手动设置延迟、加载外部字幕、启用自动校正及修改渲染器实现。1、字幕慢则按Ctrl+下,快则按Ctrl+上,每次调整50毫秒;2、右键→字幕→字幕时间调整→手动输入延迟值(正为延后,负为提前);3、将同名字幕文件与视频放同一目录,右键加载字幕并微调…

    2026年8月29日
    000
  • win10连不上wifi怎么解决_win10连不上wifi解决方案

    首先检查飞行模式和Wi-Fi开关是否开启,再重启调制解调器与路由器;接着运行网络疑难解答,更新或重装无线网卡驱动,最后通过设置重置网络配置以恢复默认状态。 如果您尝试连接Wi-Fi网络,但Windows 10设备无法检测到可用网络或连接失败,可能是由于驱动程序、系统设置或硬件开关问题所致。以下是解决…

    2026年8月29日
    100
  • 百度浏览器兼容模式切换 解决网页显示问题的实用指南

    兼容模式可解决百度浏览器访问老旧网站时的显示问题,通过切换至IE内核模拟渲染。2. 网页异常多因历史遗留技术与现代标准不兼容,兼容模式用Trident内核适配旧站,极速模式用Blink内核支持现代网页。3. 布局错乱、功能失效、资源无法加载等现象提示需切换兼容模式,点击地址栏右侧IE图标选择即可。 …

    2026年8月29日
    000
  • win10怎么运行services.msc_win10系统服务(services.msc)打开方法

    通过运行services.msc可打开Windows 10服务管理窗口,支持启动、停止和配置服务。方法包括:使用Win+R运行命令、通过任务管理器执行新任务、开始菜单搜索“服务”、右键“此电脑”进入计算机管理,或创建桌面快捷方式快速访问。 如果您需要管理Windows 10中的后台服务,例如启动、停…

    2026年8月29日
    000
  • win8开机提示bootmgr is missing_win8开机BOOTMGR丢失错误修复

    首先使用Windows安装盘修复启动,若无效则通过命令提示符执行bootrec命令重建引导记录,最后检查BIOS中SATA模式设置是否正确。 如果您的Windows 8计算机在启动时显示“BOOTMGR is missing”错误,说明系统无法找到或加载引导管理器文件bootmgr,导致无法继续启动…

    2026年8月29日
    100
  • safari浏览器如何阻止广告重定向_safari浏览器广告重定向阻止方法

    首先启用Safari的“阻止弹出式窗口”功能,再安装Adblock Plus等广告拦截扩展并开启全局运行,接着清除历史记录与网站数据以删除潜在追踪脚本,最后可临时关闭JavaScript阻断重定向,但需注意可能影响网页功能。 如果您在浏览网页时发现 Safari 浏览器频繁跳转到广告页面,这可能是由…

    2026年8月29日
    100
  • laravel8 的优化点

    Laravel 8 针对性能优化提供了以下选项:缓存配置:使用 Redis 缓存驱动、缓存门面、缓存视图和页面片段。数据库优化:建立索引、使用查询范围、使用 Eloquent 关系。JavaScript 和 CSS 优化:使用版本控制、合并和缩小资产、使用 CDN。代码优化:使用 Composer …

    2026年8月29日
    100
  • win8应用商店打不开怎么办 Win8应用商店无法打开修复指南

    首先清除应用商店缓存,若无效则检查系统更新、修复系统文件、启用TLS 1.2协议,最后重注册应用商店组件以恢复功能。 如果您尝试打开Windows 8系统中的应用商店,但应用无法加载或直接闪退,则可能是由于网络连接异常、缓存数据损坏或系统组件故障所致。以下是解决此问题的步骤: 本文运行环境:Dell…

    2026年8月29日
    200
  • iaravel 如何学习

    学习 Laravel 的步骤有:具备 PHP 基础知识。安装 Laravel 框架。了解 Laravel 架构。学习基本语法:路由、控制器、视图、模型。构建小型应用练习框架使用。参阅官方文档获取详细指引。加入社区交流心得、寻求帮助。保持更新,关注新特性。 如何学习 Laravel Laravel 是…

    2026年8月29日
    000
  • win10怎么关闭自动更新_win10自动更新永久关闭教程

    通过服务管理禁用Windows Update可阻止自动更新,进入services.msc将启动类型设为禁用并停止服务;2. 使用gpedit.msc打开组策略编辑器,在Windows更新设置中启用“已禁用”选项;3. 通过regedit修改注册表HKEY_LOCAL_MACHINESOFTWAREP…

    2026年8月29日
    200
  • win8开机黑屏只有鼠标 Win8开机后黑屏只显示鼠标指针解决方法

    如果您成功登录Windows 8系统,但桌面无法正常显示,仅能看到鼠标指针在屏幕上移动,这通常意味着Windows资源管理器(Explorer.exe)未能正确启动或已崩溃。以下是解决此问题的步骤: 本文运行环境:联想ThinkPad E14,Windows 8.1。 一、重启Windows资源管理…

    2026年8月29日
    100
  • win10怎么查看硬盘是固态还是机械_win10硬盘类型检测与分辨方法

    1、通过任务管理器可快速识别硬盘类型,显示“固态硬盘”为SSD,“硬盘驱动器”为HDD;2、使用优化驱动器工具查看“媒体类型”列判断;3、设备管理器中根据硬盘型号含“SSD”等关键词识别;4、PowerShell执行Get-PhysicalDisk命令,MediaType字段显示SSD或HDD。 如…

    2026年8月29日
    100
  • win10怎么关闭自动播放功能_win10设备自动播放功能关闭步骤

    关闭Windows 10自动播放功能可通过三种方法实现:首先使用设置应用,进入设备→自动播放,关闭“为所有媒体和设备使用自动播放”;其次通过控制面板,在硬件和声音→自动播放中取消勾选该选项并保存;最后针对专业版用户,可使用组策略编辑器,运行gpedit.msc后进入计算机配置→管理模板→Window…

    2026年8月29日
    100
  • VSCode盒子背景怎么居中_VSCode界面元素居中显示教程

    答案:通过Zen模式结合手动调整窗口大小,可实现VSCode代码区域的视觉居中。进入Zen模式(Ctrl+K Z)隐藏非编辑元素,再将窗口拖窄并置于屏幕中央,使代码居中显示,提升专注度;也可使用“Centered Editor”类插件强制居中,或利用系统窗口管理功能优化布局。配合主题、字体、面板位置…

    2026年8月29日
    100
  • Win7系统系统资源不足怎么解决?

    经常下载和安装盗版软件的用户可能会遇到这样的情况:一旦启动软件,就会弹出“系统资源不足,无法完成请求服务”的提示。起初,很多人以为是系统出了问题,于是清理了所有内存后重新打开,结果仍然出现同样的提示。有没有什么好的方法可以解决这个“系统资源不足”的问题呢?别担心,小编特意带来了图文教程。 对于配置较…

    2026年8月29日
    200
  • Win10系统如何创建U盘安装介质?

    Win10系统如何创建U盘安装介质?Win10系统如何创建U盘安装介质?Win10系统如何创建U盘安装介质?Win10系统如何创建U盘安装介质?

    windows 10 系统支持直接在线升级,但在升级期间可能会遇到一些问题。为此,微软官方推出了一个名为 mediacreationtool 的工具,用户可以通过它来升级 windows 10 或为其他设备制作 u 盘安装介质。接下来,我们将详细介绍如何利用这个工具创建 windows 10 系统的…

    2026年8月29日 用户投稿
    600

发表回复

登录后才能评论
关注微信