当前位置:首页 > JavaScript

用js实现动画

2026-03-16 01:19:42JavaScript

使用 CSS 和 JavaScript 实现动画

通过结合 CSS 的 transitionanimation 属性与 JavaScript 的事件控制,可以实现平滑的动画效果。CSS 负责动画的视觉效果,JavaScript 负责触发和控制动画。

// 获取元素
const box = document.getElementById('box');

// 添加点击事件触发动画
box.addEventListener('click', () => {
  box.style.transition = 'transform 1s ease-in-out';
  box.style.transform = 'translateX(100px)';
});

使用 requestAnimationFrame 实现高性能动画

requestAnimationFrame 是浏览器提供的专门用于动画的 API,比 setTimeoutsetInterval 更适合实现高性能动画。

let start;
const element = document.getElementById('animate');

function step(timestamp) {
  if (!start) start = timestamp;
  const progress = timestamp - start;
  element.style.transform = `translateX(${Math.min(progress / 10, 200)}px)`;
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);

使用 Web Animations API

Web Animations API 是浏览器原生支持的动画 API,可以直接通过 JavaScript 控制复杂的动画序列。

const element = document.getElementById('animate');

element.animate([
  { transform: 'translateX(0)', opacity: 1 },
  { transform: 'translateX(100px)', opacity: 0.5 }
], {
  duration: 1000,
  iterations: Infinity,
  direction: 'alternate',
  easing: 'ease-in-out'
});

使用 GSAP 等动画库

GSAP 是一个强大的 JavaScript 动画库,适合实现复杂、高性能的动画效果。

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

使用 Canvas 绘制动画

Canvas 适合实现复杂的图形动画或游戏动画,通过不断重绘实现动态效果。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let x = 0;

function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'red';
  ctx.fillRect(x, 50, 50, 50);
  x += 2;
  if (x > canvas.width) x = 0;
  requestAnimationFrame(draw);
}

draw();

使用 SVG 动画

SVG 元素可以通过 JavaScript 动态修改属性实现动画效果。

用js实现动画

const circle = document.getElementById('circle');

function animate() {
  const radius = Math.random() * 50 + 10;
  circle.setAttribute('r', radius);
  setTimeout(animate, 1000);
}

animate();

每种方法适用于不同的场景,CSS 和 JavaScript 结合适合简单的 UI 动画,requestAnimationFrame 和 Web Animations API 适合复杂交互,GSAP 适合高级动画需求,Canvas 和 SVG 适合图形密集型动画。

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

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

jquery js

jquery js

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

vue实现ios动画

vue实现ios动画

Vue 实现 iOS 动画的方法 使用 CSS Transition 和 Vue 的过渡系统 Vue 提供了内置的过渡系统,可以通过 <transition> 组件实现动画效果。结合 CS…

css3动画制作工具

css3动画制作工具

CSS3 动画制作工具推荐 以下是几款流行的工具和资源,可帮助快速创建CSS3动画,涵盖可视化工具、代码生成器和学习平台。 可视化工具 1. Animate.css 提供预定义的CSS动画…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…