讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

AniShort
AniShort

AI短剧协同制作平台

Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

SVG路径无限旋转动画的CSS实现教程

大涛小哥_7390

大涛小哥_7390

发布时间:2026-02-09 17:46:24

|

482人浏览过

|

来源于php中文网

原创

SVG路径无限旋转动画的CSS实现教程

本文详解如何为svg中的特定路径(如装饰性曲线)添加平滑、无限循环的旋转动画,重点解决`transform-origin`定位与 viewbox 适配等关键问题。

在网页装饰设计中,让SVG图形元素产生动态视觉效果能显著提升界面表现力。针对用户提供的双圆+两条手绘风格曲线的SVG结构,目标是让两条元素围绕整体中心持续旋转——这并非对整个SVG容器做旋转,而是精准控制路径自身的旋转变换中心,从而实现自然流畅的环绕动效。

✅ 核心实现原理

CSS animation 是最轻量、高性能的方案(优于JavaScript定时器或GSAP基础用法)。关键在于两点:

  1. 为需旋转的 添加类名(如 rotating-lines),避免影响其他图形;
  2. 精确设置 transform-origin:该值必须对应SVG坐标系中的物理旋转中心点(非页面像素),否则会出现偏移、裁切或“甩飞”现象。

观察原SVG的 viewBox="0 0 156 142",其几何中心约为 (78, 71)。但因两条曲线实际围绕主圆群(橙色大圆中心约在 (78.6, 68.2))运动,且需预留动画位移空间,实践中将 transform-origin 设为 80px 70px 更稳妥——此即CSS中以SVG左上角为原点的绝对坐标。

CSS工具箱(专业版)
CSS工具箱(专业版)

全功能 CSS 工程手册,覆盖性能优化、无障碍、设计系统与跨浏览器兼容。

下载

同时,必须扩大 viewBox 范围(如改为 "0 -15 160 170"),否则旋转过程中路径超出原始边界会被裁剪(SVG默认 overflow: hidden)。这是初学者最常见的失败原因。

立即学习“前端免费学习笔记(深入)”;

? 完整可运行代码

<style>
.rotating-lines {
  animation: rotate 12s linear infinite;
  transform-origin: 80px 70px; /* 关键:匹配SVG坐标系中的旋转中心 */
}
@keyframes rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
</style>

<svg width="156" height="142" viewBox="0 -15 160 170" fill="none" xmlns="http://www.w3.org/2000/svg">
  <g>
    <!-- 背景大圆 -->
    <path d="M144.094 67.4748C144.094 75.9193 142.43 84.2811 139.197 92.0827C135.965 99.8842 131.226 106.973 125.253 112.943C119.28 118.913 112.189 123.649 104.385 126.879C96.5816 130.109 88.2177 131.771 79.7716 131.768C44.2485 131.768 12.9238 101.745 12.9238 66.1794C12.9238 30.6139 48.0205 0.410156 83.5437 0.410156C119.067 0.410156 144.094 31.942 144.094 67.4748Z" fill="#E1E8EB"/>
    <!-- 主体橙色圆 -->
    <path d="M78.6071 106.451C99.7205 106.451 116.836 89.3382 116.836 68.2288C116.836 47.1194 99.7205 30.0068 78.6071 30.0068C57.4937 30.0068 40.3779 47.1194 40.3779 68.2288C40.3779 89.3382 57.4937 106.451 78.6071 106.451Z" fill="#FF7C04"/>
    <!-- 旋转曲线1(已添加class) -->
    <path class="rotating-lines" d="M2.42712 52.3071C2.42712 52.3071 -8.97112 118.683 54.695 140.344" stroke="#343A40" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
    <!-- 旋转曲线2(已添加class) -->
    <path class="rotating-lines" d="M125.151 1.63965C126.644 1.63965 157.148 26.1207 154.147 66.048" stroke="#343A40" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round"/>
  </g>
</svg>

⚠️ 注意事项与优化建议

  • 性能优先:仅对需动画的 应用 transform,避免给整个 或 添加动画,防止重排重绘开销;
  • 坐标系一致性:transform-origin 的单位必须是 px(或 em 等相对单位),且数值基于 viewBox 定义的坐标系,不是CSS像素或屏幕位置;
  • 动画时长调节:12s 提供舒缓节奏,若需更灵动效果,可降至 6s 或 8s,但避免低于 4s 以免眩晕;
  • 响应式适配:如SVG需缩放,建议用 width: 100% + height: auto,并确保 viewBox 保持比例不变,transform-origin 值无需更改(因其基于 viewBox 坐标);
  • 降级兼容性:所有现代浏览器均支持 CSS @keyframes 和 SVG transform,IE11 需额外前缀(已不推荐适配)。

通过以上方法,你不仅能实现所见即所得的旋转装饰效果,更能掌握SVG动画的核心控制逻辑——精准的坐标定位 + 合理的容器边界管理 = 稳健可靠的动态视觉表达。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
overflow什么意思
overflow什么意思

overflow是一个用于控制元素溢出内容的属性,当元素的内容超出其指定的尺寸时,overflow属性可以决定如何处理这些溢出的内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3200

2024.08.15

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

0

2026.11.12

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

0

2026.11.12

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

120

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

60

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

80

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

80

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

60

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn