能,但必须同时满足起点校准(from -90deg)、空心控制(padding+background-clip: content-box)、角度换算(calc(var(--p) * 3.6deg)),三者缺一不可,否则画出的是饼或歪环。

能,但必须同时满足三个条件:起点校准、空心控制、角度换算。缺一不可,否则画出来不是饼就是歪环。
conic-gradient 画圆环前必须加 from -90deg
默认 0deg 在正右方,但进度条习惯从顶部(12 点钟方向)开始。不加 from -90deg,75% 进度会停在 3 点钟方向,不是你想要的“指针下垂”效果。
-
conic-gradient(from -90deg, #4a9eff 0%, #4a9eff calc(var(--p) * 3.6deg), transparent 0)是安全写法 - 别用
from 0deg或省略from,那等于从右侧起笔 - 如果用了
from -90deg还偏移,检查是否漏了background-size: 200% 200%(动画依赖它)
怎么让 conic-gradient 显示成“环”而不是“实心饼”
因为 conic-gradient 默认铺满整个背景区域,包括中心。要空心,得限制它只渲染在环形带里。
- 最轻量方案:
padding: 12px(即环宽) +background-clip: content-box - 必须配
border-radius: 50%和固定宽高(如width: 120px; height: 120px),否则不是正圆,渐变拉伸变形 - 不加
background-clip时默认是border-box,中心白点盖不住,结果就是实心扇形
百分比怎么转成 conic-gradient 能识别的角度
1% = 3.6°,这是硬换算关系。直接写 var(--p)% 或 var(--p)deg 都会错——浏览器把 75% 当作字符串,75deg 当作 75 度,而非 270 度。
- 必须用
calc(var(--p) * 3.6deg),这是唯一稳的写法 - 进度为 0 时,
calc(0 * 3.6deg)得0deg,整个环透明,属预期行为 - 想防超 100%,CSS 层面需加
clamp(0, var(--p), 100),否则 120 会被当 120%,即 432°,溢出一圈
最容易被忽略的是:微信小程序完全不支持 conic-gradient,连函数名都不识别,静默失效。真机调试时进度条空白,不是代码问题,是平台限制。需要跨端时,得提前切到双半圆 + rotate 方案,别等上线才发现。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











