当前位置: 首页 > article >正文

前端动画新方法:别再用传统 CSS 动画了

前端动画新方法别再用传统 CSS 动画了什么是前端动画新方法前端动画新方法是指在前端开发中随着技术的发展出现的新的动画技术和方法。别以为动画只是简单的过渡效果那是十年前的玩法了。为什么需要关注前端动画新方法用户体验良好的动画可以提高用户体验视觉吸引力动画可以增加页面的视觉吸引力交互反馈动画可以提供清晰的交互反馈品牌形象动画可以强化品牌形象开发效率新的动画库可以提高开发效率前端动画新方法1. CSS 动画使用 CSS 动画提供简单的动画效果。/* CSS 动画 */ keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } keyframes slideIn { from { transform: translateX(-100%); } to { transform: translateX(0); } } .fade-in { animation: fadeIn 1s ease-in-out; } .slide-in { animation: slideIn 0.5s ease-out; } /* 动画延迟和重复 */ .delay-100 { animation-delay: 100ms; } .delay-200 { animation-delay: 200ms; } .infinite { animation-iteration-count: infinite; }2. CSS 过渡使用 CSS 过渡提供平滑的状态变化效果。/* CSS 过渡 */ .button { background-color: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 4px; transition: all 0.3s ease; } .button:hover { background-color: #0069d9; transform: translateY(-2px); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .button:active { transform: translateY(0); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* 多属性过渡 */ .card { transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); background-color: #f8f9fa; }3. CSS 变量动画使用 CSS 变量实现更灵活的动画效果。/* CSS 变量动画 */ :root { --primary-color: #007bff; --secondary-color: #6c757d; --animation-duration: 1s; } keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .button { background-color: var(--primary-color); animation: pulse var(--animation-duration) ease-in-out infinite; } /* 动态修改 CSS 变量 */ .button:hover { --primary-color: #0069d9; --animation-duration: 0.5s; }4. JavaScript 动画使用 JavaScript实现更复杂的动画效果。// JavaScript 动画 function animate(element, properties, duration, callback) { const start performance.now(); const startProperties {}; // 记录初始值 for (const property in properties) { startProperties[property] getComputedStyle(element)[property]; } function update(currentTime) { const elapsed currentTime - start; const progress Math.min(elapsed / duration, 1); // 计算中间值 for (const property in properties) { const startValue parseFloat(startProperties[property]); const endValue parseFloat(properties[property]); const value startValue (endValue - startValue) * progress; element.style[property] value (startProperties[property].replace(/[0-9.-]/g, )); } if (progress 1) { requestAnimationFrame(update); } else { if (callback) callback(); } } requestAnimationFrame(update); } // 使用示例 const element document.getElementById(element); animate(element, { opacity: 1, transform: translateX(0) }, 1000, () { console.log(Animation completed); });5. GSAP (GreenSock Animation Platform)GSAP 是一个强大的动画库提供了丰富的动画功能。// 安装 GSAP // npm install gsap import gsap from gsap; // 基本动画 gsap.to(.element, { x: 100, y: 50, opacity: 1, duration: 1, ease: power2.out, delay: 0.5, onComplete: () { console.log(Animation completed); } }); // 时间线动画 const tl gsap.timeline(); tl.to(.element1, { x: 100, duration: 1 }) .to(.element2, { x: 200, duration: 1 }, -0.5) // 重叠 0.5 秒 .to(.element3, { x: 300, duration: 1 }); // 滚动触发动画 import { ScrollTrigger } from gsap/ScrollTrigger; gsap.registerPlugin(ScrollTrigger); gsap.to(.element, { scrollTrigger: { trigger: .element, start: top 80%, end: bottom 20%, toggleActions: play pause resume reverse }, x: 100, duration: 1 });6. Framer MotionFramer Motion 是 React 的动画库提供了与 React 集成的动画功能。// 安装 Framer Motion // npm install framer-motion import { motion, AnimatePresence } from framer-motion; // 基本动画 function App() { return ( motion.div initial{{ opacity: 0, y: 20 }} animate{{ opacity: 1, y: 0 }} transition{{ duration: 0.5 }} h1Hello Framer Motion/h1 /motion.div ); } // 条件动画 function Toggle() { const [isVisible, setIsVisible] useState(false); return ( div button onClick{() setIsVisible(!isVisible)} Toggle /button AnimatePresence {isVisible ( motion.div initial{{ opacity: 0, height: 0 }} animate{{ opacity: 1, height: auto }} exit{{ opacity: 0, height: 0 }} transition{{ duration: 0.3 }} pHello World/p /motion.div )} /AnimatePresence /div ); }7. LottieLottie 是 Airbnb 开源的动画库使用 JSON 文件描述动画。// 安装 Lottie // npm install lottie-web import lottie from lottie-web; // 加载动画 const animation lottie.loadAnimation({ container: document.getElementById(animation), renderer: svg, loop: true, autoplay: true, path: animation.json // 动画 JSON 文件路径 }); // 控制动画 animation.play(); animation.pause(); animation.stop(); animation.goToAndStop(30, true); // 跳转到第 30 帧并停止 // 监听动画事件 animation.addEventListener(complete, () { console.log(Animation completed); });8. Web Animations API使用 Web Animations API提供原生的动画功能。// Web Animations API const element document.getElementById(element); // 基本动画 element.animate([ { opacity: 0, transform: translateX(-100%) }, { opacity: 1, transform: translateX(0) } ], { duration: 1000, easing: ease-out, fill: forwards }); // 组合动画 const animation element.animate([ { opacity: 0, transform: scale(0.5) }, { opacity: 1, transform: scale(1) } ], { duration: 500, easing: ease-out }); // 控制动画 animation.play(); animation.pause(); animation.reverse(); animation.finish(); // 监听动画事件 animation.onfinish () { console.log(Animation completed); };9. Three.js 动画使用 Three.js实现 3D 动画效果。// 安装 Three.js // npm install three import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js; // 创建场景 const scene new THREE.Scene(); scene.background new THREE.Color(0xf0f0f0); // 创建相机 const camera new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z 5; // 创建渲染器 const renderer new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 创建控制器 const controls new OrbitControls(camera, renderer.domElement); // 创建几何体 const geometry new THREE.BoxGeometry(1, 1, 1); const material new THREE.MeshBasicMaterial({ color: 0x007bff, wireframe: true }); const cube new THREE.Mesh(geometry, material); scene.add(cube); // 动画循环 function animate() { requestAnimationFrame(animate); // 旋转立方体 cube.rotation.x 0.01; cube.rotation.y 0.01; controls.update(); renderer.render(scene, camera); } animate(); // 响应式调整 window.addEventListener(resize, () { camera.aspect window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); });10. 前端动画最佳实践// 动画性能优化 const animateWithRAF (callback) { let start null; const animate (timestamp) { if (!start) start timestamp; const progress timestamp - start; callback(progress); if (progress 1000) { // 1 秒动画 requestAnimationFrame(animate); } }; requestAnimationFrame(animate); }; // 使用示例 animateWithRAF((progress) { const element document.getElementById(element); const opacity progress / 1000; element.style.opacity opacity; }); // 动画防抖 function debounceAnimation(func, wait) { let timeout; return function() { clearTimeout(timeout); timeout setTimeout(() func.apply(this, arguments), wait); }; } // 使用示例 const debouncedAnimate debounceAnimation(() { // 执行动画 }, 250); window.addEventListener(scroll, debouncedAnimate);前端动画最佳实践1. 性能优化使用 requestAnimationFrame使用 requestAnimationFrame 代替 setInterval提高动画性能避免布局抖动避免在动画中修改会触发重排的属性使用 transform 和 opacity优先使用 transform 和 opacity 属性进行动画它们不会触发重排硬件加速使用 will-change 属性提示浏览器进行硬件加速减少动画元素减少同时动画的元素数量2. 用户体验适度使用动画适度使用动画避免过度动画影响用户体验提供反馈使用动画为用户操作提供反馈保持一致性保持动画风格的一致性考虑可访问性考虑动画对用户的影响提供关闭动画的选项测试不同设备在不同设备上测试动画效果3. 开发效率使用动画库使用成熟的动画库提高开发效率组件化将动画封装为组件便于复用配置化将动画参数配置化便于调整文档为动画功能提供清晰的文档测试为动画功能编写测试用例4. 工具和资源动画库GSAP、Framer Motion、Lottie 等动画工具Adobe After Effects、Figma、Principle 等动画参考Material Design、Human Interface Guidelines 等性能工具Chrome DevTools、Lighthouse 等5. 常见动画模式入场动画元素进入页面时的动画交互动画用户交互时的动画加载动画数据加载时的动画转场动画页面切换时的动画微动画细微的交互反馈动画前端动画案例1. 案例一电商网站某电商网站使用 GSAP 实现了商品卡片的悬停动画和加入购物车的动画效果提高了用户体验。2. 案例二社交媒体应用某社交媒体应用使用 Framer Motion 实现了页面转场动画和内容加载动画提供了流畅的用户体验。3. 案例三企业网站某企业网站使用 Lottie 实现了品牌动画和数据可视化动画增强了品牌形象。4. 案例四游戏网站某游戏网站使用 Three.js 实现了 3D 游戏角色动画和场景动画提供了沉浸式的用户体验。总结前端动画是现代前端应用的重要组成部分它可以提高用户体验、增加视觉吸引力、提供交互反馈。别再用传统 CSS 动画了GSAP、Framer Motion、Lottie、Three.js 等现代动画库已经提供了更强大、更高效的动画能力。记住动画不仅仅是简单的过渡效果还包括性能优化、用户体验、开发效率等多个方面。你需要综合考虑这些因素才能创建出高质量的动画效果。别再忽视前端动画了它是前端开发的必备技能

相关文章:

前端动画新方法:别再用传统 CSS 动画了

前端动画新方法:别再用传统 CSS 动画了 什么是前端动画新方法? 前端动画新方法是指在前端开发中,随着技术的发展,出现的新的动画技术和方法。别以为动画只是简单的过渡效果,那是十年前的玩法了。 为什么需要关注前端动…...

驾校 AI 招生谁靠谱?懂驾培又懂 AI 才是关键

驾校 AI 招生谁靠谱?懂驾培又懂 AI 才是关键作者:安道利当下驾培行业,传统地推、硬广、老带新的招生效率持续下滑,获客成本飙升、线索转化率低迷,AI 招生已成为驾校破局的必选项。但市场上 AI 招生服务商鱼龙混杂&…...

SQL触发器在高并发下的可靠性设计_优化触发锁竞争范围

MySQL/PG触发器中应避免全表操作、非确定性函数及跨表更新,优先用NEW字段赋值、应用层传参、异步消息;须严格控制锁粒度并压测验证。触发器里别写 UPDATE 或 INSERT 全表操作高并发下最常见崩点:触发器里执行 UPDATE orders SET status proc…...

从面包板到PCB:我的第一个STC89C52RC学习板实战升级记录

从面包板到PCB:我的第一个STC89C52RC学习板实战升级记录 记得第一次在面包板上搭建STC89C52RC实验电路时,那些横七竖八的跳线就像一团理不清的毛线。每当需要修改电路,就得小心翼翼地拔出几根线,结果往往是牵一发而动全身——旁边…...

东莞PVC收缩膜源头厂家选择

在东莞,PVC 收缩膜的应用场景早已渗透五金、建材、日用品、电子等多个行业,成为企业包装的刚需材料。但面对市面上良莠不齐的源头厂家,如何精准筛选出 “靠谱、适配、有潜力” 的合作伙伴?今天,我们从 “发展规模、产品…...

从婴儿学步到AI进化:具身智能如何模仿人类学习过程?

从婴儿学步到AI进化:具身智能如何模仿人类学习过程? 在东京大学的一个实验室里,一台人形机器人正尝试用机械手指捏起桌上的积木。它失败了37次,却在第38次成功时将动作数据上传至云端——这个场景像极了人类婴儿第一次成功抓取玩具…...

HWSD2.0:从全球土壤数据到精准农业与生态评估的革新

1. HWSD2.0:土壤数据的革命性升级 记得十年前我第一次用HWSD1.2做农田土壤分析时,经常为数据精度不够发愁。那时候只有两层土壤数据,很多关键参数都缺失,做模型时不得不靠经验值来填补。现在HWSD2.0的发布,简直像给土壤…...

js 方法

数组转对象const foo document.querySelectorAll(.foo); const nodes Array.from(foo);立即执行函数可以写成箭头函数的形式。(() > { console.log(Welcome to the Internet.);})();const boundMethod (...params) > method.apply(this, params);function divide(a, …...

全文降AI工具价格效果对比:嘎嘎降AI、比话降AI怎么选

全文降AI工具价格效果对比:嘎嘎降AI、比话降AI怎么选 选全文降AI工具的时候,大家最关心两件事:一是效果好不好,二是价格贵不贵。 效果不好,花再少的钱也是浪费。效果好但价格离谱,很多同学也吃不消。所以最…...

全文降AI的好处:手动改 vs 工具全文降,省多少时间?

全文降AI的好处:手动改 vs 工具全文降,省多少时间? 说一个真实的场景。 论文初稿写完了,跑了一遍AI检测,结果55%。学校要求20%以下。你打开论文,开始逐段阅读检测报告里标红的段落,想着一段一段…...

全文降AI率对比实测:一次降完和分段降哪个效果更稳

全文降AI率对比实测:一次降完和分段降哪个效果更稳 有个问题一直困扰很多同学:降AI率的时候,是把整篇论文一次性丢进工具处理好,还是切成几段分别处理好? 直觉上似乎分段处理更"精细",毕竟可以对…...

全文降AI工具哪个好?3款主流工具全文处理能力对比

全文降AI工具哪个好?3款主流工具全文处理能力对比 选全文降AI工具这件事,和选其他产品一样——光看广告没用,得拿实际数据说话。 市面上号称能做全文降AI的工具少说有二三十款,但真正在效果和稳定性上经得起检验的,筛来…...

全文降AI的好处对比:嘎嘎降AI、比话降AI、率零三款横评

全文降AI的好处对比:嘎嘎降AI、比话降AI、率零三款横评 论文写完了,检测了一下AI率,38%。 这个数字说高不高说低不低,但大多数学校的标准是20%以下,有些严格的甚至要求15%。你得想办法把它降下来。 现在市面上的降AI工…...

2026最权威的降AI率平台推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 眼下,人工智能生成内容的检测技术正日益走向成熟,为了避免内容被判定…...

【AI】wvp前端加载模型进行视频分析

目录 效果 方案 本方案一 大模型方案二 tensorflow原理解析 测试过程 CPU ​编辑GPU 参考 效果 可以轻量级获取到相应的捕捉! 方案 本方案一 直接使用tensorflow coco-ssd模型进行页面上的加载 与使用 大模型方案二 其中 Omni-Vision Sanctuary (oll…...

我的AI配音副业起步:如何用Python+Xinference批量生成有声书和视频配音

用PythonXinference打造AI配音流水线:从技术到变现的实战指南 去年夏天,我偶然在音频平台上发现一个有趣的现象:许多热门有声书的评论区都有人询问"这是AI配音吗?"。更让我惊讶的是,这些由AI生成的内容不仅收…...

基于Xilinx Zynq MPSoC与GTH实现HDMI 2.1 8K@60Hz收发系统全流程解析

1. 从零搭建8K HDMI 2.1系统的硬件选型 当你第一次听说用Xilinx Zynq MPSoC实现8K60Hz视频传输时,可能会觉得这是高端实验室才能玩转的技术。但实际上市面上像XCZU11EG这样的芯片已经能完美支持,我们团队去年就用它成功部署了医疗影像系统。这里的关键在…...

飞书机器人消息收发失效 — 完整问题回溯报告@openclaw

问题概述: 安装飞书官方插件后,造成飞书机器人无响应,但是opencalw Web界面会话正常一、什么时间点引起的这个错误?时间事件2026-04-09 10:52:47安装官方插件 larksuite/openclaw-lark v2026.4.72026-04-09 10:54:11配置变更:禁用…...

**发散创新:基于Python的实时反作弊检测系统设计与实现**在现代在线游戏和平台中

发散创新:基于Python的实时反作弊检测系统设计与实现 在现代在线游戏和平台中,反作弊机制已成为保障公平竞技环境的核心模块。传统静态规则匹配方式已难以应对日益复杂的外挂行为(如内存修改、脚本自动化、高频点击等)。本文将介绍…...

通过 AGENTS.md、CLAUDE.md、SOUL.md和 MEMORY.md等文件来构建 Agent Harness避坑

目前 AI 工程界最前沿的 “基于文件的上下文工程(File-based Context Engineering)”​ 范式。 可以理解为 给 AI 员工建立“人事档案 + 岗位说明书 + 工作日记”​ 的组合。不同 Harness(如 Claude Code、Cursor、OpenClaw 等)虽然命名略有差异,但其底层架构逻辑惊人一致…...

**发散创新:用Python构建可视化编程环境——从代码到图形的跃迁之旅**在传统编程思维中,我们习惯于“写代码

发散创新:用Python构建可视化编程环境——从代码到图形的跃迁之旅 在传统编程思维中,我们习惯于“写代码 → 运行结果”的线性流程。但随着低代码、可视化开发趋势兴起,一种全新的编程范式正在悄然改变开发者的工作方式:将程序逻辑…...

从Wi-Fi 6到5G:双频匹配电路在真实多频设备中的实战设计与避坑指南

从Wi-Fi 6到5G:双频匹配电路在真实多频设备中的实战设计与避坑指南 当你在设计一款支持Wi-Fi 6和5G双模的物联网终端时,是否遇到过这样的困境:2.4GHz和5GHz频段的匹配电路在仿真时表现完美,但实际PCB打样后却发现回波损耗超标&…...

数据治理范围演进:从二维业务数据 迈向企业全域数据治理

引言:一次“理论上正确、实际上失效”的AI决策 一次“理论上正确、实际上被否决”的AI建议 某科技公司有一款战略级产品。公司决策层达成共识——即便亏损,也要持续投入,以抢占市场份额、建立生态壁垒。但这个战略定性,考虑到市场…...

AI 总是乱写代码?你可能少配置了这个文件(附生成工具)

“代码写到一半,发现 AI 又在用过时的旧语法,甚至偷偷给我加了行内样式…”如果你最近也在高频使用 Cursor 或者 Windsurf,这种抓狂的瞬间估计没少经历。 把 AI 深度接入编辑器确实爽,但随着项目越来越大,它的“自主审…...

Unlock Music音乐解锁工具:如何快速免费解锁各大平台加密音乐文件

Unlock Music音乐解锁工具:如何快速免费解锁各大平台加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目…...

为什么用户越来越依赖IT服务台?从工单系统看企业效率被“反向放大”的问题

一、一个被忽视的变化:用户越来越“离不开IT”在很多企业的日常运营中,有一个变化正在悄悄发生,但却很少被系统性分析。那就是:业务部门对IT服务台的依赖程度,正在持续上升。最初,IT服务台的设立&#xff0…...

宠物医院|基于springboot + vue宠物医院管理系统(源码+数据库+文档)

宠物医院管理系统 目录 基于springboot vue宠物医院系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue宠物医院系统 一、前言 博主…...

[精品]基于微信小程序的宿舍报修系统的设计与实现 UniApp

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 这里写目录标题项目介绍项目实现效果图所需技术栈文件解析微信开发者工具HBuilderXuniappmysql数据库与主流编程语言登录的业务流程的顺序是:毕设制作流程系统性能核心代码系统测试详细视…...

QLabel设置富文本,过长用省略号显示的方法

目录 1.背景 2.QFontMetrics 2.1.基本介绍 2.2.核心方法 2.3.使用注意 3.解决方法 3.1.简单方案:固定汉字数量截断(超过 N 字显示…) 3.2.推荐方案:按 Label 宽度自动省略(更美观) 1.背景 QLabel 设…...

Oracle APEX工作流状态变更

Oracle APEX工作流状态变更工作流TESTWorkflow当前状态是In Development,如何设置为Activate要将工作流 TESTWorkflow 从 In Development 状态设置为 Active,你必须先解决系统报错提示的“缺少所有者(Owner)”问题。在 Oracle APE…...