当前位置:首页 > JavaScript

js实现转圈

2026-03-14 00:35:18JavaScript

实现圆形旋转动画

使用CSS和JavaScript结合实现一个简单的旋转圆圈动画。通过CSS定义动画样式,JavaScript控制动画的触发或停止。

HTML结构

<div class="spinner"></div>
<button id="toggleButton">Toggle Animation</button>

CSS样式

.spinner {
  width: 50px;
  height: 50px;
  border: 5px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-top-color: #3498db;
  animation: spin 1s linear infinite;
  margin: 20px auto;
}

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

JavaScript控制

const spinner = document.querySelector('.spinner');
const toggleButton = document.getElementById('toggleButton');

toggleButton.addEventListener('click', () => {
  const isPaused = spinner.style.animationPlayState === 'paused';
  spinner.style.animationPlayState = isPaused ? 'running' : 'paused';
});

纯JavaScript实现旋转

通过requestAnimationFrame动态更新旋转角度,实现更灵活的控制。

HTML结构

<canvas id="spinnerCanvas" width="100" height="100"></canvas>
<button id="startButton">Start</button>
<button id="stopButton">Stop</button>

JavaScript代码

const canvas = document.getElementById('spinnerCanvas');
const ctx = canvas.getContext('2d');
let angle = 0;
let animationId = null;

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

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

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

  angle += 0.1;
  if (angle > Math.PI * 2) angle = 0;

  animationId = requestAnimationFrame(drawSpinner);
}

document.getElementById('startButton').addEventListener('click', () => {
  if (!animationId) {
    drawSpinner();
  }
});

document.getElementById('stopButton').addEventListener('click', () => {
  cancelAnimationFrame(animationId);
  animationId = null;
});

SVG实现旋转动画

利用SVG的transform属性实现平滑旋转效果。

HTML结构

js实现转圈

<svg width="100" height="100" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" stroke="#ddd" stroke-width="8" fill="none"/>
  <circle cx="50" cy="10" r="8" fill="#3498db" id="rotatingDot">
    <animateTransform 
      attributeName="transform" 
      type="rotate" 
      from="0 50 50" 
      to="360 50 50" 
      dur="1s" 
      repeatCount="indefinite"/>
  </circle>
</svg>

标签: js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

使用js实现

使用js实现

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

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现投球

js实现投球

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

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…