工具介绍
CSS 渐变是浏览器根据一组颜色实时生成的图像,不是上传的文件——linear-gradient() 沿指定角度的直线方向过渡颜色,radial-gradient() 则从中心点向外扩散过渡颜色。两者都接受两个及以上的颜色节点,每个节点可以单独指定在渐变中的位置。
手写渐变代码很容易出小错:节点顺序、漏写百分比,或者角度方向搞反(CSS 的角度是从「to top」开始顺时针计算的,和数学角度的方向不一样)。这个工具把这些语法细节都藏了起来——用取色器和滑块设置颜色和位置,预览框实时更新,效果满意后直接复制生成的 CSS。
来源:CSS Images Module Level 3, W3C —— 定义 linear-gradient() 和 radial-gradient() 语法的规范文档。
为什么使用它?
- 每次调整颜色、位置或角度都会实时刷新预览,不用刷新页面就能看到结果。
- 一键切换线性/径向渐变;切到径向渐变时角度控件会自动隐藏,因为径向渐变不需要角度。
- 支持添加或删除颜色节点(2 到 4 个),不局限于只有两种颜色的渐变。
- 每个节点都有独立的位置滑块,节点之间不必均匀分布。
- 生成标准的 linear-gradient()/radial-gradient() 语法,可以直接复制使用。
- 全部在浏览器本地计算,你调整的任何参数都不会上传。免费、不用注册,手机上也能用。
使用方法
- 选择渐变类型:线性或径向。
- 线性渐变可以拖动角度滑块——90deg 是从左到右,180deg 是从上到下,以此类推。
- 给每个节点设置颜色和位置;第一个节点是渐变的起始色,最后一个是结束色。
- 点击「+ 添加节点」最多可以加到 4 个节点做多色渐变,也可以点 ✕ 删除节点(最少保留 2 个)。
- 复制生成的 CSS,粘贴到 background 或 background-image 声明里。
示例
输入
线性 · 角度:90deg · 节点:#f97316 位于 0%,#ec4899 位于 100%输出
background: linear-gradient(90deg, #f97316 0%, #ec4899 100%);从左到右、橙色过渡到粉色的渐变——按钮、横幅和首页大图背景很常见的风格。
线性渐变 vs 径向渐变
线性渐变沿一条直线过渡颜色,方向由角度控制——适合横幅、按钮和有明确方向感的背景。径向渐变从中心点向外以同心圆的方式过渡颜色,更适合聚光灯效果、徽章或光晕类背景。这个工具的径向渐变默认用居中的正圆形状,覆盖了大多数径向渐变的常见用法;如果需要椭圆形状或偏移中心点,CSS 也支持,可以在复制出的代码基础上手动调整。
常见的渐变用法
- 低调的品牌色点缀:两个相近的色调、较小的角度,做出柔和的背景晕染效果。
- 高对比度的行动按钮:两个饱和度高的互补色,角度设为 90deg 或 135deg,效果醒目、点击欲强。
- 图片上的遮罩层:从透明过渡到实色(可以在取色器底层十六进制颜色上加透明度,或者复制代码后手动改成 rgba),叠加在 background-image 上。
- 多节点彩虹/品牌渐变:在 0–100% 范围内均匀分布 3–4 个节点,比双色渐变过渡得更平滑、更细腻。
- 径向聚光灯效果:靠近 0% 的中心节点用亮色,靠近 100% 的边缘节点用暗色,适合首页大图区域或卡片高亮。
配合其他 CSS 工具一起用
渐变经常和圆角、阴影一起用在同一个元素上——带柔和阴影和圆角的渐变卡片是很常见的 UI 样式。可以分别生成每一部分,再把 CSS 声明合并到同一个元素上。
常见问题
linear-gradient() 和 radial-gradient() 有什么区别?
linear-gradient() 沿指定角度的直线方向过渡颜色。radial-gradient() 从中心点向外以扩展的形状(圆形或椭圆形)过渡颜色。两者接受的颜色节点列表语法是一样的,区别只在过渡的形状。
CSS 渐变的角度是怎么算的?
CSS 渐变角度从「to top」(正上方)开始顺时针计算,0deg 指向上方,90deg 指向右侧,180deg 指向下方,270deg 指向左侧——和标准数学角度的方向正好相反,这也是手写渐变代码时最容易搞混的地方。
可以用超过 4 个颜色节点吗?
可以——CSS 渐变支持任意数量的逗号分隔颜色节点。这个工具的可视化界面上限是 4 个,方便操作,但你可以复制生成的 CSS 后,在样式表里手动追加更多「颜色 位置%」的节点。
为什么渐变看起来有色带,不够平滑?
色带通常是因为两个颜色的色相差异太大、中间节点太少,或者在对比度很低的情况下受浏览器自身颜色精度的限制。加一个颜色接近两者中间值的过渡节点,或者选色相更接近的颜色,一般能让效果更平滑。
CSS 渐变可以做动画吗?
不能直接做——渐变不像 background-position 或 transform 那样原生支持动画,因为浏览器无法在两个任意的渐变定义之间做插值。常见的替代方案是给一个尺寸放大的渐变背景做 background-position 动画,或者在只需要变换单一颜色时用 background-color 做过渡。