当前位置:首页 > JavaScript

js 实现动画

2026-02-01 19:20:56JavaScript

使用 CSS 动画

通过 @keyframes 定义动画,再通过 JavaScript 动态添加或移除 CSS 类来触发动画。

// 定义 CSS 动画(通常在样式表中)
/*
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.fade-in { animation: fadeIn 1s; }
*/

// JavaScript 触发动画
const element = document.getElementById('target');
element.classList.add('fade-in');

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

使用 requestAnimationFrame

适合需要精细控制的复杂动画,例如游戏或物理效果。

let startTime = null;
function animate(timestamp) {
  if (!startTime) startTime = timestamp;
  const progress = timestamp - startTime;
  const element = document.getElementById('target');
  element.style.transform = `translateX(${Math.min(progress / 10, 200)}px)`;
  if (progress < 2000) {
    requestAnimationFrame(animate);
  }
}
requestAnimationFrame(animate);

使用 Web Animations API

现代浏览器支持的 API,可直接通过 JavaScript 控制动画。

const element = document.getElementById('target');
element.animate(
  [
    { opacity: 0, transform: 'scale(0.5)' },
    { opacity: 1, transform: 'scale(1)' }
  ],
  { duration: 1000, easing: 'ease-out' }
);

使用 GSAP 等第三方库

GreenSock Animation Platform (GSAP) 提供更强大的动画控制。

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

使用 setIntervalsetTimeout

简单动画的替代方案,但性能不如 requestAnimationFrame

js 实现动画

let position = 0;
const interval = setInterval(() => {
  position += 1;
  document.getElementById('target').style.left = `${position}px`;
  if (position >= 100) clearInterval(interval);
}, 16);

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

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现验证码

js实现验证码

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

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

vue实现共享动画

vue实现共享动画

Vue 实现共享动画的方法 在 Vue 中实现共享动画(即多个元素间平滑过渡的动画效果)可以通过 Vue 的过渡系统和第三方库(如 GSAP)来实现。以下是几种常见方法: 使用 Vue 的 <…