当前位置:首页 > 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实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…