当前位置:首页 > JavaScript

js实现css3动画

2026-01-30 16:48:00JavaScript

使用 JavaScript 触发 CSS3 动画

通过 JavaScript 动态添加或移除 CSS 类来触发动画效果。CSS3 动画通过 @keyframes 定义,JavaScript 负责控制动画的启动或停止。

/* 定义动画关键帧 */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* 定义动画类 */
.animate-fadeIn {
  animation: fadeIn 1s ease-in-out;
}
// 获取目标元素
const element = document.getElementById('target');

// 添加动画类
element.classList.add('animate-fadeIn');

// 动画结束后移除类(可选)
element.addEventListener('animationend', () => {
  element.classList.remove('animate-fadeIn');
});

动态修改 CSS 属性

通过 JavaScript 直接修改元素的 style 属性实现动画效果,适用于需要动态参数的场景。

const element = document.getElementById('target');

// 设置初始状态
element.style.transition = 'all 1s ease-in-out';
element.style.opacity = '0';

// 触发动画
setTimeout(() => {
  element.style.opacity = '1';
}, 100);

使用 requestAnimationFrame 实现高性能动画

通过逐帧控制实现复杂动画,适合需要精细控制的场景。

const element = document.getElementById('target');
let startTime = null;

function animate(timestamp) {
  if (!startTime) startTime = timestamp;
  const progress = timestamp - startTime;
  const opacity = Math.min(progress / 1000, 1); // 1秒内从0到1

  element.style.opacity = opacity;

  if (progress < 1000) {
    requestAnimationFrame(animate);
  }
}

requestAnimationFrame(animate);

监听动画事件

通过 JavaScript 监听动画的开始、结束或迭代事件,实现更复杂的交互逻辑。

const element = document.getElementById('target');

element.addEventListener('animationstart', () => {
  console.log('动画开始');
});

element.addEventListener('animationend', () => {
  console.log('动画结束');
});

element.addEventListener('animationiteration', () => {
  console.log('动画迭代');
});

使用第三方库(如 GSAP)

对于复杂动画场景,可以使用 GreenSock Animation Platform (GSAP) 等专业库。

js实现css3动画

// 引入 GSAP 后使用
gsap.to("#target", {
  duration: 1,
  opacity: 1,
  x: 100,
  ease: "power2.out"
});

注意事项

  • CSS3 动画性能通常优于 JavaScript 直接操作 DOM。
  • 使用 transitiontransform 可触发硬件加速,提升流畅度。
  • 移动端注意兼容性和性能优化,避免过多动画导致卡顿。

标签: 动画js
分享给朋友:

相关文章

vue加载动画实现

vue加载动画实现

Vue 加载动画的实现方法 在 Vue 中实现加载动画可以通过多种方式完成,以下是一些常见的方法: 使用 CSS 动画 通过 CSS 定义动画效果,结合 Vue 的动态类绑定或条件渲染控制动画的显示…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…