svg多重圆环旋转加载动画需嵌套circle元素并用统一translate(50,50)定位中心,通过animatetransform或css @keyframes实现外环2.4s、中环1.8s、内环1.2s错时旋转,配合stroke-linecap="round"和repeatcount="indefinite"确保流畅循环。

用 SVG 实现多重圆环旋转加载动画,核心是结合 <circle></circle> 元素、<animatetransform></animatetransform>(或 CSS @keyframes)以及合理的坐标变换与时间错位。下面给出简洁可靠、可直接运行的 HTML5 SVG 方案。
基础结构:嵌套圆环 + 独立旋转中心
每个圆环需独立设置圆心和半径,并通过 transform="rotate()" 绕 SVG 中心旋转。推荐将所有圆环包裹在 <g></g> 中并统一设 transform="translate(50,50)"(假设 viewBox="0 0 100 100"),让旋转围绕画布中心进行。
示例关键结构:
SVG 原生动画:用 控制多层旋转
为每个 <circle></circle> 添加独立的 <animatetransform></animatetransform>,指定 type="rotate",from="0" to="360",并差异化设置 dur 和 begin 实现错峰旋转效果。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 外环慢速(如 2.4s)、中环中速(1.8s)、内环快速(1.2s)
- 用
begin="0s"、begin="0.2s"、begin="0.4s"错开启动时机,避免同步卡顿感 - 加上
repeatCount="indefinite"实现无限循环
片段示例(加在对应 <circle></circle> 内):
更灵活方案:CSS + SVG —— 用 class 控制旋转
给每个圆环加 class(如 ring-1、ring-2),用 CSS 定义旋转动画,语义清晰、易维护、支持硬件加速。
- SVG 中保持结构干净:
<circle class="ring-1" r="30" ...></circle> - CSS 定义不同速度与延迟:
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.ring-1 { animation: spin 2.4s linear infinite; }
.ring-2 { animation: spin 1.8s linear infinite 0.2s; }
.ring-3 { animation: spin 1.2s linear infinite 0.4s; } - 注意:需在
<circle></circle>外层<g></g>上设transform-origin: center,或整体用transform-box: fill-box配合
细节优化建议
让动画更自然、专业,注意几个关键点:
- 所有圆环
stroke-linecap="round",避免转角生硬 - 使用
stroke-dasharray可做“断续圆环”效果(如stroke-dasharray="10,5") - 若需透明度呼吸效果,可额外加
<animate attributename="opacity" ...></animate> - 响应式场景下,用
viewBox+width="100%"保证缩放不失真
不复杂但容易忽略:确保每个动画的 transform 作用于同一坐标系,优先用 <g></g> 统一 translate,再对子元素单独 rotate,避免坐标偏移导致“乱转”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










