当前位置:首页 > JavaScript

js实现动画效果

2026-02-28 18:42:43JavaScript

使用 CSS 和 JavaScript 实现基础动画

通过修改元素的 CSS 属性(如 transformopacity)实现平滑动画效果。这种方式性能较好,适合简单动画场景。

const element = document.getElementById('animatedElement');
element.style.transition = 'transform 0.5s ease, opacity 0.3s linear';
element.style.transform = 'translateX(100px)';
element.style.opacity = '0.5';

使用 requestAnimationFrame 实现高性能动画

对于需要精细控制的复杂动画,使用 requestAnimationFrame 可以确保与浏览器刷新率同步,避免卡顿。

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

  if (progress < 2000) {
    requestAnimationFrame(animate);
  }
}
requestAnimationFrame(animate);

使用 Web Animations API

现代浏览器支持的 Web Animations API 提供了更强大的动画控制能力,支持关键帧和时间轴控制。

js实现动画效果

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

结合 CSS 变量实现动态动画

通过 JavaScript 动态更新 CSS 变量,可以实现灵活的参数化动画效果。

.animated-box {
  --move-distance: 100px;
  transition: transform 0.4s;
  transform: translateX(var(--move-distance));
}
document.documentElement.style.setProperty('--move-distance', '200px');

使用 GSAP 等专业动画库

对于复杂动画场景,GSAP 等专业库提供更丰富的功能和更好的兼容性。

js实现动画效果

gsap.to(".gsap-element", {
  x: 200,
  duration: 1,
  rotation: 360,
  ease: "bounce.out"
});

性能优化注意事项

避免在动画中触发重排(reflow)的属性,如 width/height。优先使用 transformopacity 这类合成层属性。使用 will-change 提示浏览器进行优化:

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

处理动画结束事件

通过事件监听实现动画结束后的回调处理:

const animatedElement = document.getElementById('eventElement');
animatedElement.addEventListener('transitionend', () => {
  console.log('CSS 动画完成');
});

const waapiAnimation = element.animate(...);
waapiAnimation.onfinish = () => {
  console.log('Web Animations API 动画完成');
};

标签: 效果动画
分享给朋友:

相关文章

vue实现气泡效果

vue实现气泡效果

实现气泡效果的方法 在Vue中实现气泡效果可以通过CSS动画、第三方库或自定义组件完成。以下是几种常见方法: 使用纯CSS动画 通过CSS的@keyframes和transform属性创建气泡上升动…

uniapp 退场动画

uniapp 退场动画

实现退场动画的方法 在UniApp中实现退场动画可以通过CSS动画、Vue过渡效果或第三方动画库完成。以下是几种常见方法: 使用CSS动画 通过定义@keyframes和animation属性实现退…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…

vue实现动画效果

vue实现动画效果

Vue 实现动画效果的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及 CSS 动画。以下是几种常见的方法: 使用 Vue 内置的过渡系统 Vue 的 <tra…

vue实现筛选效果

vue实现筛选效果

Vue 实现筛选效果的方法 基于计算属性的筛选 在 Vue 中可以通过计算属性实现数据的动态筛选。定义一个计算属性,根据用户输入的筛选条件返回过滤后的数据列表。 <template>…

vue实现过度效果

vue实现过度效果

Vue 过渡效果实现方法 Vue 提供了内置的 <transition> 和 <transition-group> 组件,用于在元素或组件进入/离开 DOM 时应用过渡效果。…