当前位置:首页 > JavaScript

js实现转圈圈

2026-03-16 00:51:52JavaScript

使用CSS动画实现旋转效果

通过CSS的@keyframestransform属性创建旋转动画,适用于简单的加载指示器。

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

<style>
.spinner {
  width: 40px;
  height: 40px;
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-top-color: #09f;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}
</style>

使用SVG实现平滑旋转

SVG的<animateTransform>元素可以实现更复杂的路径旋转效果。

<svg width="50" height="50" viewBox="0 0 50 50">
  <circle cx="25" cy="25" r="20" fill="none" stroke="#09f" stroke-width="4">
    <animateTransform 
      attributeName="transform"
      type="rotate"
      from="0 25 25"
      to="360 25 25"
      dur="1s"
      repeatCount="indefinite"/>
  </circle>
</svg>

使用Canvas绘制动态旋转效果

通过JavaScript控制Canvas绘制过程实现可定制的旋转动画。

<canvas id="spinner" width="50" height="50"></canvas>

<script>
const canvas = document.getElementById('spinner');
const ctx = canvas.getContext('2d');
let angle = 0;

function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();
  ctx.arc(25, 25, 20, angle, angle + Math.PI * 1.5);
  ctx.strokeStyle = '#09f';
  ctx.lineWidth = 4;
  ctx.stroke();
  angle += 0.1;
  requestAnimationFrame(draw);
}
draw();
</script>

使用第三方库实现高级效果

引入Lottie等动画库可以实现更丰富的旋转效果。

js实现转圈圈

<script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.7.4/lottie.min.js"></script>
<div id="lottie-spinner" style="width: 100px; height: 100px;"></div>

<script>
lottie.loadAnimation({
  container: document.getElementById('lottie-spinner'),
  renderer: 'svg',
  loop: true,
  autoplay: true,
  path: 'https://assets5.lottiefiles.com/packages/lf20_raiw2hpe.json'
});
</script>

性能优化建议

  • 优先使用CSS动画,其性能通常优于JavaScript实现的动画
  • 减少动画元素的复杂度和数量
  • 使用will-change: transform提示浏览器优化
  • 对于移动端,考虑减少动画帧数以节省电量

以上方法可根据实际需求选择,CSS方案适合简单场景,Canvas和SVG适合需要精细控制的场景,第三方库则适合复杂动画需求。

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js画图实现

js画图实现

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