当前位置:首页 > 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、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现打印

js实现打印

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

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 实现vue

js 实现vue

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

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…