当前位置:首页 > JavaScript

js实现转圈圈

2026-02-03 00:20:55JavaScript

使用 CSS 动画实现转圈圈效果

在 JavaScript 中实现转圈圈效果通常结合 CSS 动画来完成。以下是实现方法:

创建一个 HTML 元素作为转圈圈的载体

js实现转圈圈

<div class="spinner"></div>

添加 CSS 样式和动画

.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-top-color: #3498db;
  animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

使用纯 JavaScript 实现旋转动画

如果不使用 CSS 动画,可以用 JavaScript 控制旋转:

js实现转圈圈

const spinner = document.createElement('div');
spinner.style.width = '40px';
spinner.style.height = '40px';
spinner.style.border = '4px solid rgba(0, 0, 0, 0.1)';
spinner.style.borderRadius = '50%';
spinner.style.borderTopColor = '#3498db';
document.body.appendChild(spinner);

let angle = 0;
function rotate() {
  angle = (angle + 2) % 360;
  spinner.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(rotate);
}
rotate();

使用 Canvas 实现更复杂的转圈圈

Canvas 可以实现更丰富的转圈圈效果:

<canvas id="spinnerCanvas" width="100" height="100"></canvas>
const canvas = document.getElementById('spinnerCanvas');
const ctx = canvas.getContext('2d');
let progress = 0;

function drawSpinner() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  ctx.beginPath();
  ctx.arc(50, 50, 40, 0, Math.PI * 2);
  ctx.strokeStyle = '#eee';
  ctx.lineWidth = 8;
  ctx.stroke();

  ctx.beginPath();
  ctx.arc(50, 50, 40, -Math.PI/2, -Math.PI/2 + (Math.PI * 2 * progress));
  ctx.strokeStyle = '#3498db';
  ctx.lineWidth = 8;
  ctx.stroke();

  progress = (progress + 0.01) % 1;
  requestAnimationFrame(drawSpinner);
}
drawSpinner();

使用第三方库实现转圈圈

使用流行的动画库如 GSAP 可以轻松实现:

import { gsap } from "gsap";

const spinner = document.createElement('div');
spinner.style.width = '40px';
spinner.style.height = '40px';
spinner.style.border = '4px solid rgba(0, 0, 0, 0.1)';
spinner.style.borderRadius = '50%';
spinner.style.borderTopColor = '#3498db';
document.body.appendChild(spinner);

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

以上方法提供了从简单到复杂的多种实现方式,可以根据项目需求选择适合的方案。CSS 动画方案性能最佳,纯 JavaScript 方案兼容性最好,Canvas 方案最灵活,第三方库方案最便捷。

标签: js
分享给朋友:

相关文章

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

实现图片旋转js

实现图片旋转js

使用CSS transform属性旋转图片 通过CSS的transform属性可以轻松实现图片旋转。以下是一个简单的示例代码: const image = document.getElement…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…