当前位置:首页 > 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实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…