当前位置:首页 > JavaScript

js实现动画

2026-02-28 17:15:25JavaScript

使用CSS动画实现简单效果

通过@keyframes定义动画关键帧,结合element.style.animation属性控制播放。适合简单过渡效果(如渐变、位移)。

js实现动画

// 定义CSS动画
const style = document.createElement('style');
style.innerHTML = `
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }
`;
document.head.appendChild(style);

// 应用动画
const element = document.getElementById('target');
element.style.animation = 'fadeIn 2s ease-in-out';

使用requestAnimationFrame实现高性能动画

通过递归调用requestAnimationFrame实现逐帧控制,适合复杂动画(如游戏、物理模拟)。

js实现动画

let startTime = null;
function animate(timestamp) {
  if (!startTime) startTime = timestamp;
  const progress = timestamp - startTime;

  // 计算动画状态(例如旋转角度)
  const rotation = (progress / 1000) * 360; // 1秒旋转360度
  element.style.transform = `rotate(${rotation}deg)`;

  if (progress < 2000) { // 动画持续2秒
    requestAnimationFrame(animate);
  }
}
requestAnimationFrame(animate);

使用GSAP等动画库

GSAP提供更强大的时间轴控制和复杂动画序列。适合需要精细管理的场景。

// 安装GSAP后使用
gsap.to("#target", {
  duration: 1,
  x: 100,
  rotation: 360,
  ease: "bounce.out"
});

使用Web Animations API

原生API支持组合动画和精确控制,兼容现代浏览器。

const element = document.getElementById('target');
element.animate(
  [
    { transform: 'translateX(0px)', opacity: 1 },
    { transform: 'translateX(100px)', opacity: 0.5 }
  ],
  {
    duration: 800,
    easing: 'ease-in-out',
    iterations: Infinity
  }
);

性能优化建议

  • 优先使用CSS动画或transform/opacity属性(触发硬件加速)。
  • 避免频繁操作DOM或触发重排(如读取offsetHeight)。
  • 使用will-change提示浏览器优化:
    .target {
      will-change: transform, opacity;
    }

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

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

react如何动画

react如何动画

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

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

jquery 动画

jquery 动画

jQuery 动画基础 jQuery 提供了一系列动画方法,用于实现元素的动态效果,如淡入淡出、滑动、自定义动画等。 常用动画方法 fadeIn() / fadeOut(): 元素的淡入和…

vue实现共享动画

vue实现共享动画

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

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…