当前位置:首页 > JavaScript

js实现动画加载

2026-02-03 04:40:34JavaScript

使用 CSS 动画实现基础加载效果

通过 CSS @keyframes 定义动画,结合 animation 属性实现平滑的加载动画。以下是一个旋转加载动画的示例:

.loader {
  width: 40px;
  height: 40px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

在 HTML 中插入一个 div 元素并应用此样式:

js实现动画加载

<div class="loader"></div>

使用 JavaScript 控制动画启停

通过 classList 动态添加或移除动画类,实现动画的手动控制。例如:

const loader = document.querySelector('.loader');
// 启动动画
loader.classList.add('spin-animation');
// 停止动画
loader.classList.remove('spin-animation');

使用 requestAnimationFrame 实现高性能动画

适用于需要复杂计算的动画场景。以下示例实现一个平滑移动的方块:

js实现动画加载

const box = document.getElementById('box');
let position = 0;
function animate() {
  position += 1;
  box.style.transform = `translateX(${position}px)`;
  if (position < 200) {
    requestAnimationFrame(animate);
  }
}
animate();

结合 SVG 和 JavaScript 实现高级加载动画

通过动态修改 SVG 属性实现更灵活的动画效果。例如:

const svgPath = document.querySelector('.svg-loader path');
let offset = 0;
function updatePath() {
  offset += 0.05;
  svgPath.style.strokeDashoffset = offset;
  requestAnimationFrame(updatePath);
}
updatePath();

使用第三方库(如 GSAP)简化复杂动画

GSAP 提供更强大的动画控制能力。示例代码:

gsap.to(".loader", {
  rotation: 360,
  duration: 2,
  repeat: -1,
  ease: "linear"
});

注意事项

  • 性能优化:避免频繁操作 DOM,优先使用 CSS 硬件加速属性(如 transformopacity)。
  • 兼容性:使用 window.requestAnimationFrame 的 polyfill 确保旧浏览器支持。
  • 可访问性:为加载动画添加 aria-busy="true" 属性,辅助设备可识别加载状态。

标签: 加载动画
分享给朋友:

相关文章

vue实现的动画

vue实现的动画

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

vue实现加载图片

vue实现加载图片

Vue 实现图片加载的方法 在 Vue 中加载图片可以通过多种方式实现,以下是一些常见的方法: 使用静态资源路径 将图片放在 public 或 assets 目录下,通过相对路径或绝对路径引用。…

vue实现滚动加载

vue实现滚动加载

滚动加载的实现方法 滚动加载是一种常见的前端交互方式,适用于长列表或数据量大的场景。Vue中可以通过监听滚动事件或使用Intersection Observer API实现。 使用滚动事件监听 在V…

vue实现无限加载

vue实现无限加载

Vue 实现无限加载的方法 无限加载(Infinite Scroll)是一种常见的用户体验优化方式,适用于数据量较大的列表或瀑布流场景。以下是几种在 Vue 中实现无限加载的常用方法。 监听滚动事件…

Vue异步加载实现方法

Vue异步加载实现方法

异步组件的基本实现 使用Vue的defineAsyncComponent方法定义异步组件,适用于Vue 3.x版本。该方法接收一个返回Promise的加载函数: import { defineAsy…

vue实现全局加载动画

vue实现全局加载动画

使用Vue插件封装全局加载动画 在Vue项目中创建一个自定义插件,通过Vue的插件系统实现全局调用。 创建src/plugins/loading.js文件: const Loading = {…