当前位置:首页 > JavaScript

js 实现动画

2026-04-06 12:20:48JavaScript

使用 CSS 和 JavaScript 实现动画

在 JavaScript 中实现动画可以通过多种方式,包括 CSS 动画、requestAnimationFrame 以及第三方库(如 GSAP)。以下是几种常见的方法:

CSS 动画结合 JavaScript

通过 CSS 定义动画,然后使用 JavaScript 控制动画的触发或修改属性。

/* CSS 定义动画 */
.box {
  width: 100px;
  height: 100px;
  background: red;
  transition: transform 1s ease;
}

.box.animate {
  transform: translateX(200px);
}
// JavaScript 触发动画
const box = document.querySelector('.box');
box.addEventListener('click', () => {
  box.classList.add('animate');
});

使用 requestAnimationFrame

requestAnimationFrame 是浏览器提供的原生 API,适合实现高性能的 JavaScript 动画。

const box = document.querySelector('.box');
let position = 0;

function animate() {
  position += 2;
  box.style.transform = `translateX(${position}px)`;

  if (position < 200) {
    requestAnimationFrame(animate);
  }
}

animate();

使用 setIntervalsetTimeout

虽然 setIntervalsetTimeout 可以实现动画,但性能不如 requestAnimationFrame

const box = document.querySelector('.box');
let position = 0;

const animation = setInterval(() => {
  position += 2;
  box.style.transform = `translateX(${position}px)`;

  if (position >= 200) {
    clearInterval(animation);
  }
}, 16);

使用 GSAP(GreenSock Animation Platform)

GSAP 是一个强大的动画库,适合复杂的动画场景。

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js"></script>
const box = document.querySelector('.box');
gsap.to(box, { x: 200, duration: 1, ease: "power2.out" });

使用 Web Animations API

Web Animations API 是浏览器原生支持的动画 API,可以直接操作 CSS 动画。

js 实现动画

const box = document.querySelector('.box');
box.animate(
  [
    { transform: 'translateX(0)' },
    { transform: 'translateX(200px)' }
  ],
  {
    duration: 1000,
    easing: 'ease-in-out'
  }
);

性能优化建议

  • 优先使用 requestAnimationFrame 或 CSS 动画,避免使用 setInterval
  • 使用 transformopacity 属性实现动画,这些属性不会触发重排(reflow)。
  • 对于复杂动画,考虑使用 GSAP 或 Web Animations API。

以上方法可以根据具体需求选择,CSS 动画适合简单效果,而 JavaScript 动画适合需要动态控制的场景。

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

相关文章

js实现文件下载

js实现文件下载

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

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 进度条的实现

js 进度条的实现

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

vue实现动画

vue实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要通过内置组件和 CSS 过渡/动画实现。 使用 <transition> 组件 Vue 的 <transition&g…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…