使用CSS和JavaScript实现HTML元素抖动效果教程

使用css和javascript实现html元素抖动效果教程

本教程详细介绍了如何利用CSS的@keyframes和animation属性为HTML元素创建视觉上的抖动效果。文章不仅涵盖了抖动动画的定义与应用,还进一步讲解了如何通过JavaScript动态触发和控制动画的持续时间,实现类似“函数调用”的灵活交互,并提供了完整的代码示例和实践建议。

1. 理解抖动效果的需求与原理

在用户界面设计中,抖动效果常用于吸引用户注意、表示错误输入或突出显示特定元素。实现这种效果的核心是利用CSS的动画能力,通过在短时间内快速改变元素的位置和旋转角度来模拟抖动。

CSS动画主要依赖两个关键部分:

@keyframes 规则:定义动画的各个阶段(关键帧),指定元素在不同时间点的样式。animation 属性:将定义的@keyframes动画应用到HTML元素上,并控制动画的播放方式(如持续时间、重复次数、延迟等)。

2. 定义抖动动画:@keyframes

首先,我们需要定义一个名为shake的@keyframes规则。这个规则将指定元素在动画周期内如何进行位移(translate)和旋转(rotate),从而产生抖动感。

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

@keyframes shake {  0% { transform: translate(1px, 1px) rotate(0deg); }  10% { transform: translate(-1px, -2px) rotate(-1deg); }  20% { transform: translate(-3px, 0px) rotate(1deg); }  30% { transform: translate(3px, 2px) rotate(0deg); }  40% { transform: translate(1px, -1px) rotate(1deg); }  50% { transform: translate(-1px, 2px) rotate(-1deg); }  60% { transform: translate(-3px, 1px) rotate(0deg); }  70% { transform: translate(3px, 1px) rotate(-1deg); }  80% { transform: translate(-1px, -1px) rotate(1deg); }  90% { transform: translate(1px, 2px) rotate(0deg); }  100% { transform: translate(1px, -2px) rotate(-1deg); }}

代码解析:

@keyframes shake:定义了一个名为shake的动画。0%到100%:表示动画从开始到结束的进度。transform: translate(x, y) rotate(angle):translate(x, y):使元素在X轴和Y轴上移动指定的像素。通过在不同百分比处设置不同的x和y值,模拟随机的位移。rotate(angle):使元素旋转指定的角度。通过在不同百分比处设置正负角度,增加抖动的真实感。

这个@keyframes定义了一个0.5秒的快速抖动循环。

3. 应用动画到HTML元素

要将上述定义的shake动画应用到特定的HTML元素上,我们可以创建一个CSS类。这个类将包含animation属性,用于指定动画的名称、持续时间、重复次数等。

凹凸工坊-AI手写模拟器 凹凸工坊-AI手写模拟器

AI手写模拟器,一键生成手写文稿

凹凸工坊-AI手写模拟器 500 查看详情 凹凸工坊-AI手写模拟器

/* 示例元素的基础样式 */#myDiv {  background-color: #007bff;  color: white;  height: 100px;  width: 200px;  display: flex;  justify-content: center;  align-items: center;  margin: 50px auto;  border-radius: 5px;  font-family: sans-serif;}/* 包含抖动动画的CSS类 */.shake-active {  /* 应用shake动画,每次循环0.1秒,重复30次,总计3秒 */  animation: shake 0.1s 30;   /* 动画结束后保持最终状态,或直接移除类以恢复 */  /* animation-fill-mode: forwards; */ }

animation属性详解:

animation-name: shake,指定要播放的@keyframes动画名称。animation-duration: 0.1s,指定动画一个循环的持续时间。这里我们把单个抖动周期设置得很短,以实现更快的抖动频率。animation-iteration-count: 30,指定动画的重复次数。由于单个抖动周期是0.1秒,重复30次将使整个抖动效果持续3秒(0.1s * 30 = 3s),符合“持续约3秒”的需求。animation-fill-mode: forwards(可选),动画结束后,元素将保持其动画结束时的样式。如果希望动画结束后元素恢复原样,则可以省略此属性,或在JavaScript中移除shake-active类。

4. HTML结构示例

为了演示,我们创建一个简单的HTML页面,包含一个用于触发抖动的按钮和一个将要抖动的div元素。

      HTML元素抖动效果      /* 将上述CSS代码粘贴到这里 */    #myDiv {      background-color: #007bff;      color: white;      height: 100px;      width: 200px;      display: flex;      justify-content: center;      align-items: center;      margin: 50px auto;      border-radius: 5px;      font-family: sans-serif;      font-size: 1.2em;    }    .shake-active {      animation: shake 0.1s 30; /* 0.1秒一个循环,重复30次,总计3秒 */    }    @keyframes shake {      0% { transform: translate(1px, 1px) rotate(0deg); }      10% { transform: translate(-1px, -2px) rotate(-1deg); }      20% { transform: translate(-3px, 0px) rotate(1deg); }      30% { transform: translate(3px, 2px) rotate(0deg); }      40% { transform: translate(1px, -1px) rotate(1deg); }      50% { transform: translate(-1px, 2px) rotate(-1deg); }      60% { transform: translate(-3px, 1px) rotate(0deg); }      70% { transform: translate(3px, 1px) rotate(-1deg); }      80% { transform: translate(-1px, -1px) rotate(1deg); }      90% { transform: translate(1px, 2px) rotate(0deg); }      100% { transform: translate(1px, -2px) rotate(-1deg); }    }    button {      display: block;      margin: 20px auto;      padding: 10px 20px;      font-size: 1em;      cursor: pointer;      background-color: #28a745;      color: white;      border: none;      border-radius: 5px;    }    
我将抖动!
// JavaScript代码将在此处添加

5. 动态触发抖动效果(模拟“调用函数”)

CSS动画本身是声明式的,不能像JavaScript函数一样直接“调用”。但我们可以通过JavaScript动态地添加或移除包含动画定义的CSS类来模拟这种“调用”行为。

为了实现“持续约3秒”并自动停止,我们将利用JavaScript监听动画结束事件。

const myDiv = document.getElementById('myDiv');const shakeButton = document.getElementById('shakeButton');shakeButton.addEventListener('click', () => {  // 确保在添加新动画前移除旧的类,防止重复触发导致问题  myDiv.classList.remove('shake-active');   // 强制浏览器重绘,以便动画能重新开始  void myDiv.offsetWidth;   // 添加 shake-active 类来触发抖动动画  myDiv.classList.add('shake-active');});// 监听动画结束事件myDiv.addEventListener('animationend', (event) => {  // 确保只处理我们定义的shake动画  if (event.animationName === 'shake') {    // 动画结束后移除 shake-active 类,使元素恢复原样    myDiv.classList.remove('shake-active');  }});

JavaScript代码解析:

获取DOM元素:通过document.getElementById获取div和button元素。按钮点击事件监听:当点击shakeButton时,执行以下操作:myDiv.classList.remove(‘shake-active’):在每次触发前,先移除shake-active类。这很重要,因为如果类已经存在,再次添加它可能不会重新触发动画。void myDiv.offsetWidth;:这是一个小技巧,强制浏览器进行重绘(reflow)。在移除类后立即添加类,浏览器可能优化掉中间的渲染步骤,导致动画不重新播放。强制重绘可以确保动画能够从头开始。myDiv.classList.add(‘shake-active’):将shake-active类添加到myDiv上,从而应用抖动动画。动画结束事件监听:myDiv.addEventListener(‘animationend’, …):监听myDiv上的animationend事件。当任何CSS动画完成一个循环或完全结束时,都会触发此事件。if (event.animationName === ‘shake’):确保我们只处理名为shake的动画结束事件,避免影响其他可能的动画。myDiv.classList.remove(‘shake-active’):动画结束后,移除shake-active类。这样,元素将停止抖动并恢复其原始状态,等待下一次触发。

6. 注意事项与最佳实践

性能考量:transform属性的动画通常由GPU加速,性能较好。但过度频繁或在大量元素上同时使用复杂动画仍可能影响页面性能。用户体验与无障碍性:抖动动画可能对某些用户(如患有前庭疾病或对运动敏感的用户)造成不适。避免过度使用,仅在必要时(如错误提示)使用。考虑为用户提供关闭动画的选项,或通过CSS媒体查询@media (prefers-reduced-motion)来提供简化的体验。浏览器兼容性:@keyframes和animation属性在现代浏览器中支持良好。对于旧版浏览器,可能需要添加供应商前缀(如-webkit-),但现在通常不再是必需。动画持续时间与频率:根据实际需求调整animation-duration和animation-iteration-count。快速、短促的抖动(如0.1s循环)配合多次重复,通常比慢速、长时间的单次抖动效果更佳。动画库:对于更复杂或需要更精细控制的动画,可以考虑使用现有的JavaScript动画库(如GSAP、Anime.js)或CSS动画库(如Animate.css)。

通过以上步骤,您已经掌握了如何使用CSS和JavaScript为HTML元素创建动态且可控的抖动效果。这种方法不仅提供了视觉反馈,还通过JavaScript实现了灵活的事件触发机制。

以上就是使用CSS和JavaScript实现HTML元素抖动效果教程的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 03:47:11
下一篇 2025年11月29日 03:47:37

相关推荐

  • 安币binance交易所v2.100.4官网最新版安卓版入口

    安币Binance交易所作为全球领先的数字资产交易平台,其不断更新的版本始终致力于为用户提供最优质的交易体验。最近推出的V2.100.4版本特别针对安卓用户进行了优化,使其在操作流畅度、安全性和功能丰富度上都有了显著提升。本文将详细介绍如何通过官方网站获取安币Binance交易所V2.100.4安卓…

    2025年12月8日
    000
  • 数字货币交易平台哪个最安全?全国安全靠谱十大虚拟货币交易APP推荐

    随着虚拟货币市场的不断发展,选择一个安全可靠的交易平台变得至关重要。本文将为您推荐全国安全靠谱的十大虚拟货币交易APP,帮助您在投资过程中更好地保护自己的资产和隐私。 币安(Binance) 下载步骤: 打开浏览器进入官网。或者搜索“BinanceAPP”选择官方应用并下载安装注册账号并完成身份验证…

    2025年12月8日 好文分享
    000
  • 必安官网注册账户(开户)完整教程2025

    必安(Binance)是全球领先的加密货币交易平台,成立于2017年,由赵长鹏(CZ)创立。作为一家中心化交易所,必安提供多种加密货币的交易对,并支持法币交易入口。其技术定位在于提供高效、安全的交易环境,通过不断优化交易引擎和安全措施来提升用户体验。必安的原生代币BNB(Binance Coin)不…

    2025年12月8日
    000
  • RWA,AI和IP逐渐成为Web3世界中三个最具想象力的主要线条。

    rwa在2023年引发了热情,现在进入了更精致的资产分类阶段。 ai在2024年爆发,为nvidia带来了历史性的市场价值飞跃。 ip曾经被视为“冷轨道”,由于ai的快速开发而被重新定义为web3的“能量引擎”,这既是数据资产的内容的来源,也是数据资产的核心结构。 现实世界资产(RWA),人工智能(…

    2025年12月8日
    000
  • 个人买u卖u合法吗?正规合法买u卖u平台前十推荐

    个人买U卖U是否合法? 在许多国家和地区,个人买卖比特币是合法的,但具体的法律法规因国家和地区的不同而有所差异。在部分地区,个人买卖比特币不被禁止,但必须遵守相关的法律法规,如反洗 钱和反恐怖主义融资法规。个人在进行比特币交易时,需确保交易行为符合当地法律要求。 如何确保个人买U卖U的合法性? 为了…

    2025年12月8日 好文分享
    000
  • 区块链项目的三大分类介绍:公链、私链与联盟链的优点分析!

    区块链本质上是一个去中心化的数据库,它不依赖于第三方,而是通过自身的节点进行网络数据的存储、验证、传递和交流。经过多年的运作,区块链技术已经出现了日新月异的发展,其应用范围已经涵盖了金融、游戏、产权、等多个领域。今天这篇医疗文章我们将盘点区块链的类型和特征。 区块链项目的三大分类介绍:公链、私链与联…

    2025年12月8日
    000
  • 去中心化存储龙头币有哪些?去中心化存储概念币盘点

    众所周知,web 3.0的演进将需要一个分散的web内容分发系统,而不是一个集中的分发系统。与传统的云计算一样,您按使用付费,而不是为服务器预付费用。但是,并非所有数据都存储在集中式服务器中,而是将数据分布到不同的块中并存储在对等(p2p)网络的不同节点中。去中心化存储平台分解用户的文件并将它们分布…

    2025年12月8日
    000
  • 什么是全球美元Global Dollar(USDG稳定币)?USDG、USDT和USDC的有什么区别?

    什么是全球美元(usdg)?全球美元(usdg)有什么作用?全球美元(usdg)和其他稳定币usdt、usdc有什么区别呢? 全球美元(USDG)是一种与美元挂钩的稳定币,旨在通过合规监管和企业级应用推动稳定币的实际应用场景。USDG 由 Paxos Dollar Singapore Ltd 发行,…

    2025年12月8日 好文分享
    000
  • XRP价格预测:加密分析师预测2025年6月25美元至75美元

    一名加密分析师表示,xrp的价格有望达到显著的高度,6月份的价格区间预计在25美元到75美元之间。 据该分析师称,一系列看涨因素的汇聚可能推动这一价格大幅上涨,这或许会成为XRP历史上的新高点。在X(原名Twitter)的一篇详细帖文中,匿名分析师“Real Redmi救济”列举了2025年6月和7…

    2025年12月8日
    000
  • 正规交易平台app必安手机版安装入口

    作为全球领先的数字资产交易平台,其手机版应用程序为用户提供了便捷的交易体验。无论你是新手还是专业交易者,必安都能够满足你对数字资产交易的需求。通过必安手机版,你可以随时随地进行交易,查看实时市场数据,管理你的资产组合,并享受安全、稳定的交易环境。为了让更多用户能够顺利安装和使用必安手机版,本文将详细…

    2025年12月8日 好文分享
    000
  • HUMA币在哪里交易?Huma Finance怎么用?

    HUMA币可以在Binance、Huobi Global、KuCoin和okx等交易所交易。要使用Huma Finance平台,用户需访问官网、创建账户、连接钱苞、存款和提款,并选择借贷、资产管理或支付服务。 HUMA币,作为Huma Finance生态系统中的原生代币,近年来吸引了众多加密货币爱好…

    2025年12月8日 好文分享
    000
  • Binance最新v2.100.3 官方安卓版 BI安2025官方正式版下载安装教程

    Binance v2.100.3优化了用户体验和功能,提供更流畅、安全的交易。下载并安装需遵循官方步骤,支持多种加密货币交易。 Binance v2.100.3 是Binance官方发布的最新版本安卓应用。这个版本在用户体验和功能上进行了多项优化和改进,旨在为用户提供更流畅、更安全的交易体验。无论你…

    2025年12月8日
    000
  • 芝麻开门网页版入口 芝麻开门网页版正确地址

    芝麻开门网页版入口地址为www.gate.com。1.打开浏览器,输入该网址。2.在首页找到“网页版”或“登录”按钮。3.确保网站使用HTTPS协议,确认URL正确。4.输入用户名和密码,启用2FA后输入验证码登录。5.选择交易对,输入数量,选择订单类型,确认后交易。6.在“资产管理”页面查看和管理…

    2025年12月8日
    000
  • bitget交易所官网入口 bitget交易所怎么下载

    Bitget交易所官网入口为www.bitget.com,用户可通过浏览器访问。下载Bitget应用步骤如下:1. iOS用户在App Store搜索并下载;2. Android用户在Google Play Store搜索并下载。下载后登录或注册即可开始交易。 Bitget交易所作为全球领先的加密货…

    2025年12月8日
    000
  • oe交易所官网入口 oe交易所正确地址

    OE交易所的官网入口可以通过以下方式找到:1)访问官方社交媒体账户,2)使用搜索引擎,3)通过官方APP访问;确保访问正确地址的方法包括:1)检查域名,2)使用书签,3)查看网站安全证书。 在加密货币交易领域,选择一个可靠的交易所是至关重要的。OE交易所作为一个新兴的交易平台,吸引了大量的投资者和交…

    2025年12月8日
    000
  • 必安交易所怎么安全下载 必安交易所安全入口

    安全下载必安交易所App和访问入口的方法包括:1.访问官方网站下载App;2.选择iOS或Android系统下载;3.安装并启用2FA;4.直接访问官方网站或使用书签访问网页版;5.检查网站安全性并登录。 必安交易所概述 必安交易所(Binance)是全球领先的加密货币交易平台之一,提供多种数字资产…

    2025年12月8日
    000
  • 安币交易所怎么安全下载 安币交易所安全入口

    安币交易所安全下载和访问的步骤包括:1.访问官方网站下载客户端;2.验证文件完整性;3.书签官方网站并使用HTTPS访问;4.启用双重认证并使用强密码进行安全交易。 安币交易所安全下载指南 安币交易所是许多加密货币投资者选择的平台之一。为了确保在使用该交易所时能够安全地进行下载和访问,我们将详细介绍…

    2025年12月8日
    000
  • 欧意官网打不开 欧意交易所app下载

    欧意官网打不开可以通过检查网络连接、更换DNS服务器;欧意交易所app可在iOS、Android和桌面端下载。访问欧意官网时,若遇到网络连接问题,请确保连接正常并尝试刷新页面。 如果你在访问欧意(OKX)官网时遇到问题,或者想要下载欧意交易所的应用程序,本文将详细介绍如何解决这些问题并提供下载指南。…

    2025年12月8日
    000
  • 2025年度数字资产交易所综合实力排行榜前十汇总

    在2025年,数字资产交易所的竞争愈发激烈,市场上涌现出许多实力强劲的平台。以下是对2025年度综合实力排行榜前十的数字资产交易所的详细汇总,涵盖了每个交易所的关键特点、服务、安全性以及用户体验。 1. Binance(币安)  核心优势:流动性全球第一,日交易量超千亿美元,覆盖600+币种,新币首…

    2025年12月8日 好文分享
    000
  • ok交易所怎么下载 ok交易所官网入口

    如何下载OK交易所应用?在iOS设备上,通过App Store搜索“OKX”或“OK交易所”并下载安装;在Android设备上,通过Google Play Store搜索并下载安装。下载后,登录或注册即可使用。 如何下载OK交易所应用 OK交易所,作为全球知名的加密货币交易平台,提供了一个便捷的移动…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信