当前位置:首页 > JavaScript

js实现animation

2026-01-31 19:45:07JavaScript

使用 CSS @keyframes 和 JavaScript 触发动画

通过 CSS 定义动画关键帧,JavaScript 动态添加或移除类名触发动画:

/* CSS 定义动画 */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.animate {
  animation: fadeIn 1s ease-in-out;
}
// JavaScript 触发动画
const element = document.getElementById('target');
element.classList.add('animate');

// 动画结束后移除类名(可选)
element.addEventListener('animationend', () => {
  element.classList.remove('animate');
});

使用 requestAnimationFrame 实现高性能动画

手动控制每一帧的渲染,适合需要精细控制的场景:

function animate(element, duration) {
  const start = performance.now();

  function update(time) {
    const elapsed = time - start;
    const progress = Math.min(elapsed / duration, 1);

    element.style.transform = `translateX(${progress * 200}px)`;

    if (progress < 1) {
      requestAnimationFrame(update);
    }
  }

  requestAnimationFrame(update);
}

animate(document.getElementById('box'), 1000);

使用 Web Animations API

现代浏览器原生支持的动画 API,提供更强大的控制能力:

const element = document.getElementById('logo');
element.animate(
  [
    { transform: 'rotate(0deg)', opacity: 1 },
    { transform: 'rotate(360deg)', opacity: 0.5 }
  ],
  {
    duration: 1000,
    iterations: Infinity,
    easing: 'ease-in-out'
  }
);

使用 GSAP 等动画库

专业动画库如 GSAP 提供更丰富的功能和跨浏览器兼容性:

// 需先引入 GSAP 库
gsap.to("#object", {
  duration: 2,
  x: 100,
  rotation: 360,
  ease: "bounce.out"
});

处理动画性能优化

确保动画运行流畅的注意事项:

js实现animation

  • 优先使用 transformopacity 属性,它们不会触发重排
  • 避免在动画中修改 widthheightmargin 等会触发布局变化的属性
  • 对需要频繁动画的元素应用 will-change: transform
  • 使用 requestAnimationFrame 而非 setTimeoutsetInterval

标签: jsanimation
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…