当前位置:首页 > JavaScript

前端动画js实现

2026-02-02 18:49:42JavaScript

使用CSS动画与JavaScript结合

通过Element.animate()方法直接触发CSS动画,适用于简单动画场景。

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

基于requestAnimationFrame的动画

手动控制每一帧的渲染,适合需要精细控制的复杂动画。

前端动画js实现

let startTime;
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);

使用GSAP等动画库

GSAP提供高性能的时间轴控制和复杂动画序列管理。

gsap.to("#target", {
  x: 100,
  duration: 1,
  repeat: -1,
  yoyo: true
});

Web Animations API实现

原生API支持更复杂的动画组合和状态管理。

前端动画js实现

const keyframes = [
  { transform: 'scale(1)', backgroundColor: 'red' },
  { transform: 'scale(1.5)', backgroundColor: 'blue' }
];
const options = {
  duration: 1000,
  iterations: Infinity,
  direction: 'alternate'
};
document.getElementById('target').animate(keyframes, options);

SVG动画处理

通过JavaScript动态修改SVG属性实现路径动画。

const path = document.getElementById('svg-path');
let offset = 0;
function updatePath() {
  offset += 0.01;
  path.setAttribute('stroke-dashoffset', offset);
  requestAnimationFrame(updatePath);
}
updatePath();

性能优化要点

  • 优先使用transformopacity属性触发硬件加速
  • 避免频繁的重排(reflow)操作
  • 使用will-change属性预声明动画元素
    .target {
    will-change: transform, opacity;
    }

动画缓动函数选择

通过自定义贝塞尔曲线或使用预定义缓动:

const easingFunctions = {
  easeInOut: t => t<0.5 ? 2*t*t : -1+(4-2*t)*t,
  elastic: t => (.04 - .04 / t) * Math.sin(25 * t) + 1
};

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

相关文章

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

js实现刷新

js实现刷新

刷新当前页面 使用 location.reload() 方法可以强制刷新当前页面。该方法接受一个布尔参数,默认为 false,表示从缓存中加载页面;设为 true 时强制从服务器重新加载。 // 从…

js sort 实现

js sort 实现

数组排序基础方法 JavaScript 数组的 sort() 方法默认按照字符串 Unicode 码点顺序排序。直接调用时会将元素转为字符串再比较: const arr = [10, 2, 5, 1…