当前位置:首页 > 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实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…