讲师中心 微信公众号
AI工具推荐 视频效率加速

SVG矢量动画实战:制作自适应进度的SVG环形进度条

老磊吖_3485

老磊吖_3485

发布时间:2026-06-28 08:26:38

|

202人浏览过

|

来源于php中文网

原创

SVG环形进度条通过stroke-dasharray与stroke-dashoffset协同控制视觉长度,配合rotate(-90)校正起点、CSS transition仅作用于stroke-dashoffset实现平滑动画,且需动态计算周长、统一设置linecap/linejoin及viewBox确保精度与响应式。

svg矢量动画实战:制作自适应进度的svg环形进度条

SVG环形进度条的核心在于用矢量路径的“裁剪+偏移”机制表达进度,不是靠JS逐帧绘制,而是靠stroke-dasharray和stroke-dashoffset两个属性协同控制视觉长度,再结合CSS过渡实现平滑动画。关键是要让数学计算与DOM结构、样式声明严格对齐,否则容易出现不动、错位或跳变。

圆周长必须动态算准,不能硬编码

进度表现是否准确,取决于圆周长值是否与实际半径严格匹配。公式是:circumference = 2 × π × r。比如半径设为70,周长就是2 × 3.1416 × 70 ≈ 439.82;若半径改为50,周长就得重算为314.16。硬写成“471”或“314”看似方便,但一旦r变动,进度百分比就会整体失真。

  • 推荐在JS中统一计算:const r = 70; const circumference = 2 * Math.PI * r;
  • 把stroke-dasharray设为该值(如"439.82"),作为最大可显示长度
  • stroke-dashoffset初始值设为周长,表示进度0%时完全不可见

起点对齐顶部,必须加 rotate(-90)

SVG默认角度0°在正右方,直接画圆环会导致进度从右侧开始顺时针增长。要让进度从顶部开始(符合常规认知),必须将整个圆环逆时针旋转90度。最稳妥的方式是用<g transform="rotate(-90)">包裹<circle>,而不是只对单个元素加transform——这样能确保坐标系整体校正,避免后续动画偏移。

CSS3 SVG带控件的顶部导航栏代码
CSS3 SVG带控件的顶部导航栏代码

CSS3 SVG带控件的顶部导航栏代码是一款功能强大的带控件的超实用网页顶部导航栏。

下载
  • 不要只给<circle>加transform,易被其他样式覆盖
  • 如果使用viewBox(如viewBox="-50 -50 100 100"),建议圆心设为(0,0),配合rotate更干净
  • 辅助底环和进度环都应放在同一<g>内,保证旋转同步

CSS过渡只作用于 stroke-dashoffset

动画流畅的关键是仅对stroke-dashoffset做CSS transition,且必须写在元素内联style上(如style="transition: stroke-dashoffset 0.4s ease-out;")。浏览器无法对stroke-dasharray插值,若对其加transition,动画会卡顿或失效。

  • JS更新时只改stroke-dashoffset:偏移量 = 周长 × (1 − 进度 / 100)
  • 例如进度60%,offset = 439.82 × 0.4 ≈ 175.93
  • 多个进度条批量更新时,先批量计算offset值,再统一setAttribute,避免强制同步重排

细节优化让线条更自然

粗线边缘发虚、接头生硬、缩放变形,往往源于几个小但关键的属性缺失:

  • 加上stroke-linecap="round",让圆环两端呈半圆收尾,视觉更饱满
  • 加上stroke-linejoin="round",避免转角处出现尖锐凸起
  • 两层圆环(底环+进度环)用相同r、cx、cy和stroke-width,仅颜色不同,确保精准重叠
  • 容器用viewBox替代固定宽高(如viewBox="0 0 160 160"),实现真正响应式缩放

热门AI工具

更多
WorkBuddy

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

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

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

二狗PPT
二狗PPT Hot

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

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

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

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2183

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

4663

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

5810

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5258

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

743

2024.05.22

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

3631

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

6068

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

774

2025.12.30

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
svg中文手册
svg中文手册

共0课时 | 0.3万人学习

SVG 教程
SVG 教程

共20课时 | 20.4万人学习

前端基础进阶-移动Web
前端基础进阶-移动Web

共187课时 | 34.4万人学习

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

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