当前位置:首页 > JavaScript

js实现转圈圈

2026-02-03 00:20:55JavaScript

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

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

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

<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 控制旋转:

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 可以轻松实现:

js实现转圈圈

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实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js 实现按钮点击

js 实现按钮点击

实现按钮点击的 JavaScript 方法 HTML 按钮元素 在 HTML 中创建一个按钮,可以通过 <button> 或 <input> 标签实现: <button…

实现图片旋转js

实现图片旋转js

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