渐变生成器

线性/径向/锥形/CSS 代码

426 次访问
CSS GRADIENT GENERATOR

CSS 渐变生成器

线性 / 径向 / 锥形渐变可视化设计 · 多色标拖拽 · 实时 CSS 代码

预览

在色条上点击添加色标 · 拖拽调整位置 · 双击删除

参数

135°

色标列表

预设渐变

CSS 代码

关于本工具

了解工具定位 · 使用场景 · 对比优势

选择渐变类型(线性、径向、锥形),拖动色标或输入色值,实时预览渐变效果并一键复制 CSS 代码。前端开发者快速生成背景样式、设计师验证渐变配色、自媒体做封面渐变,无需打开设计软件。所有计算在浏览器内完成,颜色数据不上传服务器。

使用场景

🎨

UI 界面配色

前端开发者在设计按钮悬停态、背景渐变或卡片分割线时,需要快速生成线性或径向渐变代码。本工具直接输出 CSS 代码片段,支持自定义角度、颜色节点和渐变类型,省去手动写 background 属性的试错时间,复制即可嵌入项目。

🖼️

社交媒体配图

运营人员制作公众号封面、海报背景或 Instagram 故事时,需要一张有层次感的渐变图。本工具提供线性、径向、锥形三种渐变模式,实时预览颜色过渡效果,截图或导出后直接用于配图,无需打开 Photoshop 或 Sketch。

💻

CSS 动画练习

学习 CSS 动画的初学者想用渐变作为背景过渡效果,但手动写 @keyframes 和渐变组合容易出错。本工具生成标准 CSS 渐变代码,复制后可直接套用到动画 demo 中,让学习者专注于动画逻辑而非颜色计算。

📱

App 原型演示

产品经理在 Sketch/Figma 中画低保真原型时,需要快速填充渐变背景来区分功能区域。本工具在线调整颜色与渐变类型,生成截图后直接拖入原型工具,比在设计软件里调渐变参数快 3 倍以上。

🎮

游戏 UI 元素

独立游戏开发者制作角色血条、技能冷却光环或菜单背景时,常用径向渐变模拟发光效果。本工具支持多色节点和透明度调节,生成 CSS 代码后直接用于 Unity WebGL 或 Cocos 项目的 UI 组件,避免手写 Canvas 渐变逻辑。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具(渐变生成器)CSS Gradient(cssgradient.io)手动编写 CSS
数据隐私纯浏览器处理,颜色参数不上传任何服务器浏览器端处理,无上传完全本地,不涉及网络
处理速度调整参数后即时预览,无延迟即时预览,响应迅速需反复保存文件、刷新浏览器查看效果,耗时较长
离线可用页面加载后完全离线可用,无网络依赖页面加载后离线可用完全离线,依赖本地编辑器
交互方式可视化滑块+色盘拖拽,实时预览渐变效果可视化滑块+色盘,实时预览纯文本编写 CSS 代码,无可视化反馈
输出格式直接生成 CSS 代码,支持线性/径向/锥形渐变生成 CSS 代码,主要支持线性/径向渐变需手动编写所有 CSS 属性,易出错
学习成本零门槛,拖拽即可生成代码零门槛,操作直观需掌握 CSS background-image / gradient 语法
锥形渐变支持支持(conic-gradient)不支持需手动编写,语法较复杂

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 选择渐变类型:线性、径向或锥形,点击对应标签切换
  2. 设置颜色节点:点击色块添加颜色,拖动节点调整位置与过渡
  3. 调整角度或中心点:线性渐变拖动角度滑块,径向/锥形渐变拖动中心点
  4. 预览实时效果:画布区域即时显示渐变结果,可缩放查看细节
  5. 点击「复制 CSS」按钮,代码自动复制到剪贴板,可直接粘贴到样式文件

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
linear-gradient(to right, #ff0000, #0000ff)线性渐变,从左到右,从红色过渡到蓝色典型场景:最常见的双色水平渐变
radial-gradient(circle, #ffff00 0%, #ff6600 50%, #ff0000 100%)径向渐变,圆形,从中心黄色到橙色再到红色典型场景:三色径向渐变,模拟太阳效果
conic-gradient(from 0deg, #ff0000, #00ff00, #0000ff, #ff0000)锥形渐变,从0度开始,红绿蓝循环一周典型场景:色环或仪表盘风格的锥形渐变
linear-gradient(45deg, #000000 0%, #ffffff 50%, #000000 100%)线性渐变,45度角,黑白黑白条纹效果边界 case:使用相同颜色首尾,形成条纹图案
radial-gradient(ellipse at 20% 80%, #00ff00 0%, transparent 100%)径向渐变,椭圆形状,位于左下角,绿色到透明边界 case:使用透明色和自定义位置,适合叠加效果
conic-gradient(from 90deg at 30% 30%, #ff0000, #0000ff)锥形渐变,从90度开始,中心偏移到左上角边界 case:锥形渐变支持偏移中心点,非默认圆心
linear-gradient(180deg, #abc, #def)线性渐变,从上到下,浅蓝绿色到浅紫蓝色易错 case:使用三字母十六进制简写,需正确解析
radial-gradient(circle closest-side, #ff0000 0%, #00ff00 50%, #0000ff 100%)径向渐变,圆形,尺寸为最近边,三色渐变易错 case:closest-side 关键字改变渐变范围,新手易忽略

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 把 CSS 渐变代码直接粘贴到 HTML 属性里

错误
<div style="background: linear-gradient(red, blue)">
修复
<div style="background: linear-gradient(red, blue);"> 或 <div class="gradient"> + CSS 文件里写 .gradient { background: linear-gradient(red, blue); }

HTML style 属性里 CSS 语法完全有效,但很多人漏掉分号结尾,导致后续属性失效。更推荐分离到 CSS 文件,便于复用和调试。

2. 径向渐变里写两个半径值但顺序错了

错误
radial-gradient(circle 100px 50px at center, red, blue)
修复
radial-gradient(ellipse 100px 50px at center, red, blue) 或 radial-gradient(circle 50px at center, red, blue)

circle 不接受两个半径值(它只有一个半径);想定义椭圆必须用 ellipse 关键字,然后写宽高(宽 高)。circle 写两个值会被浏览器忽略第二个。

3. 锥形渐变(conic-gradient)角度单位混用

错误
conic-gradient(red 0deg, blue 90deg, green 180deg, yellow 270deg)
修复
conic-gradient(red 0deg, blue 90deg, green 180deg, yellow 270deg) 或 conic-gradient(red 0turn, blue 0.25turn, green 0.5turn, yellow 0.75turn)

写法本身没错,但混用 deg/turn/rad 容易算错比例。建议全用 deg(0-360)或全用 turn(0-1),保持单位一致,避免 0.5turn 和 180deg 混写时的心算错误。

4. 渐变方向用 top/left 但搞混起点和终点

错误
linear-gradient(to bottom, red, blue) 以为是从上到下渐变
修复
linear-gradient(to bottom, red, blue) 实际是从上到下(顶部红色到底部蓝色)

to bottom 表示渐变方向指向底部,所以起点是顶部红色,终点是底部蓝色。想从底部红色渐变到顶部蓝色,应写 to top。很多人把方向关键字和颜色顺序搞反。

5. 颜色停止点(color-stop)位置值超出 0-100% 范围

错误
linear-gradient(red 120%, blue 200%)
修复
linear-gradient(red 100%, blue 100%) 或 linear-gradient(red 0%, blue 100%)

CSS 渐变允许位置值超出 0%-100%,但行为是:<0% 的颜色被裁剪,>100% 的颜色被截断。超过 100% 的停止点不会产生额外渐变,只会让颜色在终点后纯色填充。

6. 在旧浏览器(如 IE11)里用多个渐变层叠

错误
background: linear-gradient(red, blue), radial-gradient(yellow, green);
修复
检查 Can I Use 确认浏览器支持 multi-background;或回退到单层渐变 + 纯色 fallback:background: red; background: linear-gradient(red, blue);

IE9+ 支持线性渐变,但多背景(逗号分隔多个渐变)在 IE11 及更早版本中不支持。如果不加 fallback,整个背景会消失。

7. 把渐变生成器的 CSS 代码直接用在 SVG 里

错误
<rect fill="linear-gradient(red, blue)" />
修复
<defs><linearGradient id="g"><stop offset="0%" stop-color="red"/><stop offset="100%" stop-color="blue"/></linearGradient></defs><rect fill="url(#g)" />

SVG 有自己的渐变语法(linearGradient/radialGradient 元素),不支持 CSS 的 gradient() 函数。直接复制 CSS 代码到 SVG fill 属性会无效。

8. 透明渐变里忘了加 rgba 或 hsla 的 alpha

错误
linear-gradient(transparent, white) 以为透明到白色
修复
linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)) 或 linear-gradient(transparent, white)

transparent 关键字在 CSS 中等于 rgba(0,0,0,0)(完全透明黑色),不是透明白色。如果背景是白色,透明到白色渐变会先显示黑色过渡,看起来脏。用 rgba 指定白色透明更准确。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

C(t) = (1 - t) × C0 + t × C1, t ∈ [0, 1]

变量说明

  • C(t) — 插值位置 t 处的颜色值(RGB 分量)
  • C0 — 起始颜色值(RGB 分量,0-255)
  • C1 — 结束颜色值(RGB 分量,0-255)
  • t — 插值比例,0 为起点,1 为终点

示例

从红色 (255, 0, 0) 到蓝色 (0, 0, 255) 的线性渐变,取 t=0.5 处颜色:R = (1-0.5)×255 + 0.5×0 = 127.5,G = (1-0.5)×0 + 0.5×0 = 0,B = (1-0.5)×0 + 0.5×255 = 127.5,得到中紫色 (128, 0, 128)。

适用范围

适用于线性渐变中任意两点间的颜色插值,是 CSS linear-gradient 的核心算法。径向/锥形渐变在此基础上增加角度或半径参数。不适用于非连续色标(如硬边渐变),此时需引入 step 函数。

原理图

用户选择渐变类型设置颜色色标 / 方向浏览器渲染Canvas / CSS预览实时调整参数角度 / 半径生成代码CSS 语法代码输出可复制下载PNG
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

from PIL import Image, ImageDraw

# 创建线性渐变图像 (从左到右: 红→蓝)
width, height = 400, 200
img = Image.new('RGB', (width, height))
draw = ImageDraw.Draw(img)

for x in range(width):
    # 按 x 位置线性插值颜色分量
    r = int(255 * (1 - x / width))   # 红色递减
    b = int(255 * (x / width))       # 蓝色递增
    for y in range(height):
        draw.point((x, y), fill=(r, 0, b))

img.save('linear_gradient.png')
print('线性渐变已保存: linear_gradient.png')
package main

import (
	"image"
	"image/color"
	"image/png"
	"os"
)

func main() {
	// 创建径向渐变图像
	width, height := 400, 400
	img := image.NewRGBA(image.Rect(0, 0, width, height))
	cx, cy := float64(width)/2, float64(height)/2 // 圆心
	maxDist := cx                                    // 最大半径

	for y := 0; y < height; y++ {
		for x := 0; x < width; x++ {
			dx := float64(x) - cx
			dy := float64(y) - cy
			dist := sqrt(dx*dx + dy*dy)
			ratio := dist / maxDist
			if ratio > 1 {
				ratio = 1
			}
			// 从黄色(中心)到蓝色(边缘)
			r := uint8(255 * (1 - ratio))
			g := uint8(255 * (1 - ratio))
			b := uint8(128 + uint8(127*ratio))
			img.Set(x, y, color.RGBA{r, g, b, 255})
		}
	}

	f, _ := os.Create("radial_gradient.png")
	defer f.Close()
	png.Encode(f, img)
}

func sqrt(x float64) float64 {
	// 简单牛顿迭代求平方根
	z := 1.0
	for i := 0; i < 10; i++ {
		z -= (z*z - x) / (2 * z)
	}
	return z
}
// 生成 CSS 线性渐变代码示例
function generateLinearGradient(colors, angle = 180) {
  if (colors.length < 2) {
    throw new Error('至少需要两种颜色');
  }
  const stops = colors.map((c, i) => {
    const percent = (i / (colors.length - 1)) * 100;
    return `${c} ${percent.toFixed(1)}%`;
  });
  return `background: linear-gradient(${angle}deg, ${stops.join(', ')});`;
}

// 使用示例
const cssCode = generateLinearGradient(['#ff0000', '#00ff00', '#0000ff'], 90);
console.log(cssCode);
// 输出: background: linear-gradient(90deg, #ff0000 0.0%, #00ff00 50.0%, #0000ff 100.0%);

// 生成径向渐变 CSS
function generateRadialGradient(colors, shape = 'circle') {
  const stops = colors.map((c, i) => {
    const percent = (i / (colors.length - 1)) * 100;
    return `${c} ${percent.toFixed(1)}%`;
  });
  return `background: radial-gradient(${shape}, ${stops.join(', ')});`;
}

console.log(generateRadialGradient(['#ffcc00', '#ff6600']));
// 输出: background: radial-gradient(circle, #ffcc00 0.0%, #ff6600 100.0%);

常见问题

8 个高频疑问

这个渐变生成器怎么用?我打开后不知道从哪里开始。
操作很简单:页面上通常有「类型」选择(线性/径向/锥形)、颜色拾取器(至少两个色标)、角度或半径滑块。先选渐变类型,然后点击色标修改颜色,拖动色标改变位置比例。如需添加更多颜色,点击色条空白处新增色标。右侧预览区会实时显示效果,下方自动生成对应的 CSS 代码,可以直接复制到项目中使用。如果卡在某个步骤,可以尝试调整角度或颜色数量,效果会立刻变化。
为什么我调出来的渐变颜色看起来和预览不一样?
色差通常由两个原因导致:一是显示器色彩空间差异,普通 sRGB 显示器上预览的渐变在广色域屏上可能偏艳或偏淡,这是硬件限制,工具本身无法修正。二是浏览器渲染差异——不同浏览器对 CSS 渐变的抗锯齿算法略有不同,Chrome 和 Safari 的径向渐变边缘模糊度就不一样。建议在目标用户最常用的浏览器上复制 CSS 代码后实际测试,也可以在工具内截图对比。如果差别很大,检查颜色值是否使用了十六进制以外的格式(如 hsl 或 rgba)。
生成的 CSS 代码可以直接复制到我的网站用吗?需要改什么吗?
可以直接复制使用,代码是标准的 CSS background-image 属性值,兼容所有现代浏览器(Chrome、Firefox、Safari、Edge)。无需额外修改,但注意两点:第一,代码中可能包含 -webkit- 前缀版本,这是为了兼容旧版 Safari,保留即可。第二,如果用在 inline style 中,需要去掉换行和多余空格;如果用在 CSS 文件中,保持原样。建议先粘贴到浏览器的开发者工具中测试效果,确保与工具预览一致。
这个工具支持锥形渐变吗?我找了半天没找到。
支持的。锥形渐变(conic-gradient)在类型选择里通常标为「锥形」或「Conic」。如果没看到,可能是界面布局问题:部分工具把锥形放在二级菜单或「更多」选项里。锥形渐变需要设置起始角度和中心点位置,默认从 0 度(顶部)开始顺时针旋转。注意:锥形渐变在 IE 和旧版 Edge(非 Chromium 版)中不受支持,如果目标用户使用这些浏览器,建议改用线性或径向渐变替代。
为什么我设置了四个颜色,但渐变看起来只有两个颜色?
这通常是因为色标位置重叠或间距过近。CSS 渐变中颜色按色标位置比例过渡,如果两个色标位置相同(比如都在 50%),它们之间不会产生平滑过渡,而是硬切变。解决方法:在工具中拖动色标,确保相邻色标位置有足够间距(至少 5%-10%)。另外,如果使用了透明度(rgba 或 hsla),透明色与实色之间的过渡也可能看起来像颜色减少,可以改为不透明色测试。检查色标数量是否真的添加成功——有时点击添加后未松开鼠标会导致重复。
这个工具和 Photoshop 的渐变工具比,有什么限制?
主要限制有三点:第一,颜色空间——Photoshop 支持 Lab、HSL 等色彩空间插值,颜色过渡更自然,而浏览器 CSS 渐变默认在 sRGB 空间插值,高饱和色过渡可能偏灰。第二,渐变形状——PS 支持菱形、反射、角度等复杂形状,CSS 只支持线性、径向、锥形三种基础类型。第三,控制精度——PS 可以精确到像素级控制色标位置和混合模式,CSS 只能按百分比定位。优势是零安装、实时预览、直接输出 CSS 代码,适合网页开发快速出稿。如果需要高保真设计稿,建议先用 PS 调好再参考颜色值。
生成的渐变在移动端手机上会卡顿吗?
不会卡顿。CSS 渐变由 GPU 硬件加速渲染,性能开销极低,远小于图片背景或 Canvas 绘制。即使是 4K 屏幕或低端 Android 手机,线性/径向/锥形渐变的渲染帧率也能稳定在 60fps。但注意:如果在一个页面上同时使用了大量(超过 20 个)大面积渐变背景,可能会因内存占用导致滚动轻微掉帧。建议将渐变用于关键背景元素(如按钮、卡片背景),避免整个页面铺满复杂锥形渐变。如果担心性能,可以在 Chrome DevTools 的 Performance 面板录制测试。
工具生成的渐变代码可以商用吗?有版权问题吗?
没有版权问题。工具生成的 CSS 代码是纯数学计算产物(颜色插值),不包含任何受版权保护的图案或数据。代码本身属于「操作方法」范畴,不受著作权法保护。你可以自由将生成的渐变用于商业项目、开源项目、个人作品,无需署名或付费。但注意:如果工具提供了预设的渐变模板(如「日落渐变」「极光渐变」),这些模板的颜色组合可能被其他设计师注册为商标或外观设计专利(极少数情况),建议商用前做基础检索,或直接使用自己调的颜色。
选择 打开 +新窗口 esc关闭