当前位置:首页 > 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) 等专业库。

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

注意事项

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

js实现css3动画

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

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

css3动画在线制作

css3动画在线制作

CSS3 动画在线制作工具 以下是一些常用的在线工具和平台,可以帮助快速生成 CSS3 动画代码,无需手动编写: Animista 网址:https://animista.net/ 特点:提供预设的…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

vue的动画实现

vue的动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要包括内置组件和第三方库。 使用 <transition> 和 <transition-group> Vue 内…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…