




radial-gradient中circle和ellipse决定渐变基础轮廓:ellipse默认拉伸,circle强制等距过渡;at关键字精确定位圆心,尺寸参数(如closest-side)控制扩散范围,色标位置调节过渡节奏。
circle 和 ellipse 怎么影响颜色过渡形状形状决定渐变“扩散”的基础轮廓,不是可有可无的修饰项。默认是 ellipse(椭圆),在宽高不等的容器里会拉伸;设为 circle 才能保证从中心向等距边缘均匀过渡。
关键点在于:即使你写了 circle,如果没显式指定尺寸(比如 at center 或具体半径),浏览器仍可能按容器比例推算,导致实际过渡区域偏移或缩放异常。
radial-gradient(circle, red, blue):强制圆形,但半径由浏览器自动计算(通常是到最远角的距离)radial-gradient(circle at 50% 50%, red, blue):明确中心点,更可控radial-gradient(ellipse at left top, red, blue):从左上角开始拉出椭圆过渡,过渡方向感明显增强at 关键字精确定位渐变中心at 后面跟的是渐变“起始点”,也就是颜色最浓的位置。它不改变过渡范围大小,只移动起点——这点常被误认为是“移动整个渐变图案”,其实只是挪了圆心。
常见错误是写成 at 20px 30px 却忘了容器本身有 padding 或 border,结果视觉中心偏移。建议统一用百分比(如 at 30% 40%)或结合 calc() 动态计算。
at center 等价于 at 50% 50%,安全且语义清晰at 20% 80% 表示中心落在距左 20%、距顶 80% 的位置,适合做底部亮光效果at left 10px bottom 20px 是合法语法,表示“从左边偏移 10px、底部偏移 20px 的位置”作为圆心radial-gradient 的尺寸参数(closest-side 等)怎么控制过渡范围尺寸参数决定“渐变从中心扩散到哪为止”,直接控制颜色过渡的**长度**和**缓急感**。它不是 CSS 长度单位,而是关键词,含义依赖于容器尺寸和 at 位置。
例如 closest-side 指到最近的边(上/下/左/右)的距离;而 farthest-corner 指到最远角的距离。同一组颜色,在不同尺寸参数下,过渡带宽可能差 2 倍以上。
closest-side:过渡紧凑,适合小图标内发光farthest-side:过渡舒展,适合大背景柔化100px(显式长度):完全自控,但注意在响应式布局中可能失效farthest-corner,容易在窄屏上过渡过猛仅靠尺寸参数只能控制“总长度”,真正决定颜色怎么变、在哪变快变慢的,是颜色停止点的位置。它和尺寸参数共同构成过渡曲线的“锚点”。
典型陷阱:写 radial-gradient(circle, #fff, #000) 看起来很平滑,但其实是默

radial-gradient( circle at center, #fff 0%, #ffcc00 60%, #ff3300 100% )
都是显式锚点,推荐全写,避免隐式分配% 基于当前尺寸参数算出的“总半径”来定位,不是基于容器宽高#f00 50%, #00f 50%)会产生硬切at 一起用时,closest-side 这类关键词的“最近边”是相对于新圆心计算的,不是容器左上角。调效果前先确认圆心在哪,再看它离哪条边最近——否则改半天参数也不知为何不生效。