当前位置:首页 > JavaScript

js 实现动画

2026-02-01 19:20:56JavaScript

使用 CSS 动画

通过 @keyframes 定义动画,再通过 JavaScript 动态添加或移除 CSS 类来触发动画。

// 定义 CSS 动画(通常在样式表中)
/*
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.fade-in { animation: fadeIn 1s; }
*/

// JavaScript 触发动画
const element = document.getElementById('target');
element.classList.add('fade-in');

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

使用 requestAnimationFrame

适合需要精细控制的复杂动画,例如游戏或物理效果。

js 实现动画

let startTime = null;
function animate(timestamp) {
  if (!startTime) startTime = timestamp;
  const progress = timestamp - startTime;
  const element = document.getElementById('target');
  element.style.transform = `translateX(${Math.min(progress / 10, 200)}px)`;
  if (progress < 2000) {
    requestAnimationFrame(animate);
  }
}
requestAnimationFrame(animate);

使用 Web Animations API

现代浏览器支持的 API,可直接通过 JavaScript 控制动画。

js 实现动画

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

使用 GSAP 等第三方库

GreenSock Animation Platform (GSAP) 提供更强大的动画控制。

// 引入 GSAP 后使用
gsap.to('#target', {
  x: 100,
  duration: 1,
  ease: 'power2.out'
});

使用 setIntervalsetTimeout

简单动画的替代方案,但性能不如 requestAnimationFrame

let position = 0;
const interval = setInterval(() => {
  position += 1;
  document.getElementById('target').style.left = `${position}px`;
  if (position >= 100) clearInterval(interval);
}, 16);

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

相关文章

css3结合js制作

css3结合js制作

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

js 实现倒计时

js 实现倒计时

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

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

vue 动画 实现

vue 动画 实现

Vue 动画实现基础 Vue 提供了 <transition> 和 <transition-group> 组件,结合 CSS 或 JavaScript 钩子实现动画效果。核心是…