当前位置:首页 > 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实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js 实现图片轮播

js 实现图片轮播

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

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…