当前位置:首页 > 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 元素并应用此样式:

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

使用 JavaScript 控制动画启停

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

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

使用 requestAnimationFrame 实现高性能动画

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

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" 属性,辅助设备可识别加载状态。

js实现动画加载

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

相关文章

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const rel…

vue实现ios动画

vue实现ios动画

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

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load(…

vue实现路由动画

vue实现路由动画

路由动画的实现方法 在Vue中实现路由动画通常结合<transition>组件和Vue Router的导航守卫。以下是几种常见实现方式: 基础过渡动画 <template>…

vue加载实现分页

vue加载实现分页

Vue 实现分页加载的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用其分页组件。在模板中添加分页组件,并绑定相关事件和数据。 <template&…

vue实现触底加载

vue实现触底加载

触底加载的实现方法 在Vue中实现触底加载功能,可以通过监听滚动事件或使用Intersection Observer API来实现。以下是两种常见的方法: 监听滚动事件 在组件中监听滚动事件,计算…