当前位置:首页 > 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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…