当前位置:首页 > JavaScript

用js实现动画

2026-03-16 01:19:42JavaScript

使用 CSS 和 JavaScript 实现动画

通过结合 CSS 的 transitionanimation 属性与 JavaScript 的事件控制,可以实现平滑的动画效果。CSS 负责动画的视觉效果,JavaScript 负责触发和控制动画。

// 获取元素
const box = document.getElementById('box');

// 添加点击事件触发动画
box.addEventListener('click', () => {
  box.style.transition = 'transform 1s ease-in-out';
  box.style.transform = 'translateX(100px)';
});

使用 requestAnimationFrame 实现高性能动画

requestAnimationFrame 是浏览器提供的专门用于动画的 API,比 setTimeoutsetInterval 更适合实现高性能动画。

用js实现动画

let start;
const element = document.getElementById('animate');

function step(timestamp) {
  if (!start) start = timestamp;
  const progress = timestamp - start;
  element.style.transform = `translateX(${Math.min(progress / 10, 200)}px)`;
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);

使用 Web Animations API

Web Animations API 是浏览器原生支持的动画 API,可以直接通过 JavaScript 控制复杂的动画序列。

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

element.animate([
  { transform: 'translateX(0)', opacity: 1 },
  { transform: 'translateX(100px)', opacity: 0.5 }
], {
  duration: 1000,
  iterations: Infinity,
  direction: 'alternate',
  easing: 'ease-in-out'
});

使用 GSAP 等动画库

GSAP 是一个强大的 JavaScript 动画库,适合实现复杂、高性能的动画效果。

用js实现动画

gsap.to("#box", {
  duration: 1,
  x: 100,
  rotation: 360,
  ease: "bounce.out"
});

使用 Canvas 绘制动画

Canvas 适合实现复杂的图形动画或游戏动画,通过不断重绘实现动态效果。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let x = 0;

function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'red';
  ctx.fillRect(x, 50, 50, 50);
  x += 2;
  if (x > canvas.width) x = 0;
  requestAnimationFrame(draw);
}

draw();

使用 SVG 动画

SVG 元素可以通过 JavaScript 动态修改属性实现动画效果。

const circle = document.getElementById('circle');

function animate() {
  const radius = Math.random() * 50 + 10;
  circle.setAttribute('r', radius);
  setTimeout(animate, 1000);
}

animate();

每种方法适用于不同的场景,CSS 和 JavaScript 结合适合简单的 UI 动画,requestAnimationFrame 和 Web Animations API 适合复杂交互,GSAP 适合高级动画需求,Canvas 和 SVG 适合图形密集型动画。

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

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

css3动画制作工具

css3动画制作工具

CSS3 动画制作工具推荐 以下是几款流行的工具和资源,可帮助快速创建CSS3动画,涵盖可视化工具、代码生成器和学习平台。 可视化工具 1. Animate.css 提供预定义的CSS动画…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…