不能用实现环形进度,必须用css conic-gradient或svg;css方案轻量但兼容性差(ie不支持),svg方案兼容性好、可控性强,推荐生产环境使用。

用 <progress></progress> 实现每日字数完成比例环?不行,得换方案
HTML 原生 <progress></progress> 元素只能渲染为横向条状,不支持环形(圆环/饼图式)进度展示。想做“笔记目标进度环”,必须借助 CSS 绘制或 SVG —— 这是根本前提,硬套 <progress></progress> 会卡在第一步。
CSS conic-gradient 绘制环形进度最轻量
现代浏览器(Chrome 85+、Firefox 89+、Safari 15.4+)支持 conic-gradient,适合用纯 CSS 实现动态环形进度。核心思路:用两个叠层 —— 底层灰色圆环 + 上层彩色锥形渐变遮罩,通过 background 的裁剪角度控制显示比例。
关键实操点:
-
background: conic-gradient(#4a90e2 0% <font color="red">X%</font>, #e0e0e0 <font color="red">X%</font> 100%),其中 X% =Math.min(100, Math.round((current / target) * 100)) - 必须设
border-radius: 50%和固定宽高(如width: 120px; height: 120px),否则不是正圆 - 要隐藏文字溢出,加
overflow: hidden;环内居中文字需用position: absolute配合transform: translate(-50%, -50%) - IE 完全不支持,如需兼容旧环境,直接跳过此方案
SVG <circle></circle> + stroke-dasharray 更稳更可控
兼容性好(IE9+)、动画顺滑、数值精确 —— SVG 方案更适合生产环境。原理是用一个 <circle></circle> 的描边长度代表 100%,再用 stroke-dasharray 截取对应比例的可见段。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
关键参数计算(假设圆环半径 r = 45,圆心坐标 cx = cy = 50):
- 周长 =
2 * Math.PI * r≈282.74,这就是满进度的stroke-dasharray值 - 当前进度长度 =
282.74 * (current / target),设为dash;剩余部分 =282.74 - dash <circle stroke-dasharray="<font color=" red>dash <font color="red">282.74-dash</font>"></circle>- 注意:默认
<circle></circle>起始角度在 3 点钟方向,需加transform="rotate(-90 50 50)"让进度从 12 点钟开始
JS 动态更新时别直接改 innerHTML 或重绘整个 SVG
频繁修改字数(比如每敲一个字就刷新)时,DOM 操作成本高。应只更新必要属性:
- 对 CSS 方案:只改元素的
style.background字符串,避免触发重排 - 对 SVG 方案:只改
<circle></circle>的stroke-dasharray属性值,用element.setAttribute('stroke-dasharray', '...') - 不要每次重新生成整个 SVG 字符串插入 —— 容易丢掉事件监听或导致闪烁
- 如果字数变化不频繁(如每天手动录入一次),用模板字符串 +
innerHTML也够用,但别在输入框input事件里这么干
环形进度本质是视觉反馈,数值准确性比动效更重要。CSS 方案省事但兼容窄,SVG 方案多写几行却一劳永逸 —— 别被“看起来高级”带偏,先看你的用户用什么浏览器。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










