conic-gradient()的核心作用是生成围绕中心点旋转的颜色过渡图像,需配合border-radius、clip-path等实现饼图、加载环等效果;首尾颜色必须完全一致才能闭环无缝,from控制起始角度,at控制锥心位置,伪元素+overflow:hidden是实现平滑旋转动画的关键方案。

conic-gradient() 的核心作用不是“画图”,而是生成一张**围绕中心点旋转的颜色过渡图像**。它本身不绘制形状,但配合 border-radius、clip-path、伪元素和动画,能高效实现饼图、加载环、雷达扫描、放射线等效果。直接用在普通块级元素上,若没做裁剪或圆角,你会看到一个方形渐变贴图——这不是 bug,是设计如此。
为什么 conic-gradient(red, yellow, green) 看起来有接缝?
因为默认从 0deg(正上方)开始,到 360deg 结束,而 green 是终点色,red 是起点色,两者不衔接,视觉上会断开。解决办法只有一个:首尾颜色必须相同。
-
conic-gradient(red, yellow, green, red)✅ 闭环无缝 -
conic-gradient(red, yellow, green)❌ 360° 处出现硬边 - 哪怕只差一个空格或大小写(如
REDvsred),CSS 也不认为它们相等——必须完全一致
from 和 at 参数怎么影响实际效果?
from 控制起始角度,at 控制锥心位置。二者独立生效,但顺序不能错:必须是 from <angle> at <position></position></angle>,反过来会失效。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
-
conic-gradient(from 45deg, red, blue)→ 渐变从右上方向(45°)开始顺时针铺开 -
conic-gradient(at top left, red, blue)→ 锥心移到左上角,渐变围绕那个点旋转 -
conic-gradient(from 90deg at 20% 80%, red, yellow, red)→ 起始角为 90°(正右方),锥心在距顶 20%、距左 80% 的位置 - 锥心偏移后,若容器不是正方形,渐变扇形会明显拉伸或挤压——这不是错误,是几何必然
伪元素 + inset + overflow: hidden 是旋转动画的黄金组合
想让锥形渐变“转起来”且边缘不露白边或锯齿?别直接给容器加 animation: rotate,那会连内容一起转。正确做法是用 ::before 承载渐变,并把它撑大一点。
- 伪元素设
inset: -25%(或top: -25%; left: -25%; width: 150%; height: 150%),确保旋转时边缘始终在父容器内 - 父容器必须设
overflow: hidden,否则扩大的伪元素会溢出 - 伪元素需
z-index: -1和content: '',否则不渲染 - 动画写在伪元素上:
animation: rot 3s linear infinite,@keyframes rot { to { transform: rotate(360deg); } }
兼容性差不是借口,但得知道哪些地方真不能用
conic-gradient() 在 Chrome 69+、Firefox 83+、Safari 15.4+ 中原生支持。Edge 已随 Chromium 合并,没问题。真正卡住的是 iOS Safari ≤15.3 和旧版 Android Webview。
- 用
@supports (background: conic-gradient(red, red))做特性检测,而非 UA 判断 - 不要 fallback 到
radial-gradient—— 它无法模拟扇形分割逻辑,饼图会全糊成一团 - 真要兼容老设备,得用 SVG 或 Canvas 绘制,CSS 方案无替代路径
- 动态更新颜色或角度?只能靠 JS 修改 CSS 变量,再用
var(--color)注入conic-gradient()—— 但变量不能用于角度值(from var(--deg)不合法)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










