当前位置:首页 > JavaScript

js实现spinner

2026-02-01 10:11:26JavaScript

使用CSS和JavaScript实现Spinner

创建一个简单的旋转加载动画(Spinner)可以通过CSS动画结合JavaScript控制显示与隐藏。以下是两种常见实现方式:

纯CSS Spinner

通过CSS关键帧动画实现无需额外JavaScript逻辑:

<div class="spinner"></div>
.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-left-color: #09f;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

动态控制Spinner的JavaScript实现

通过JavaScript动态显示/隐藏Spinner:

<button id="loadButton">加载数据</button>
<div id="spinner" class="spinner" style="display:none;"></div>
document.getElementById('loadButton').addEventListener('click', function() {
  const spinner = document.getElementById('spinner');
  spinner.style.display = 'block';

  // 模拟异步操作
  setTimeout(() => {
    spinner.style.display = 'none';
    alert('加载完成');
  }, 2000);
});

高级Spinner库实现

使用第三方库如Spin.js提供更多定制选项:

<div id="spinner-container"></div>
const opts = {
  lines: 12, // 旋转线条数
  length: 10, // 线条长度
  width: 5, // 线条宽度
  radius: 15, // 内圆半径
  color: '#000', 
  speed: 1, // 旋转速度
  trail: 60, // 拖尾百分比
  shadow: false 
};

const spinner = new Spinner(opts).spin(document.getElementById('spinner-container'));

// 停止Spinner
spinner.stop();

SVG动画Spinner

使用SVG实现更复杂的动画效果:

js实现spinner

<svg class="spinner" viewBox="0 0 50 50">
  <circle cx="25" cy="25" r="20" fill="none" stroke-width="5"></circle>
</svg>
.spinner {
  animation: rotate 2s linear infinite;
  width: 50px;
  height: 50px;
}

.spinner circle {
  stroke-linecap: round;
  animation: dash 1.5s ease-in-out infinite;
}

@keyframes rotate {
  100% { transform: rotate(360deg); }
}

@keyframes dash {
  0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }
  50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }
  100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }
}

注意事项

  • 性能优化:避免同时运行多个Spinner动画
  • 可访问性:为Spinner添加aria-busy="true"属性
  • 响应式设计:使用相对单位(如vw%)适应不同屏幕尺寸

标签: jsspinner
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…