当前位置:首页 > JavaScript

js实现动画

2026-01-12 12:49:54JavaScript

使用 CSS 动画与 JavaScript 控制

通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classList 控制动画状态。

/* CSS 定义 */
.animate {
  animation: fadeIn 2s ease-in-out;
}
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
// JavaScript 触发
const element = document.getElementById('target');
element.classList.add('animate');

使用 requestAnimationFrame

手动控制每一帧的渲染,适合复杂动画逻辑。通过递归调用实现连续动画。

js实现动画

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,可直接操作动画属性和时间。

js实现动画

const element = document.getElementById('target');
element.animate(
  [
    { opacity: 0, transform: 'translateY(-20px)' },
    { opacity: 1, transform: 'translateY(0)' }
  ],
  {
    duration: 1000,
    easing: 'ease-out'
  }
);

使用第三方库(如 GSAP)

GSAP 提供更强大的时间轴控制和复杂动画序列。

gsap.to("#target", {
  x: 100,
  duration: 1,
  rotation: 360,
  ease: "bounce.out"
});

性能优化建议

避免频繁触发重排和重绘。使用 transformopacity 属性(硬件加速),减少动画元素的数量,必要时使用 will-change 提示浏览器。

.target {
  will-change: transform, opacity;
}

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

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

vue 实现动画

vue 实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,包括内置组件、CSS 过渡/动画以及第三方库集成。 使用 <transition> 组件 Vue 内置的 <transit…

jquery动画

jquery动画

jQuery动画基础 jQuery提供了多种动画方法,用于创建平滑的过渡效果。常用的动画方法包括animate()、fadeIn()、fadeOut()、slideUp()和slideDown()。…

js实现防洪

js实现防洪

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…