颜色工具类是 Tailwind 最常用的功能,用来设置文字、背景、边框、轮廓等元素的色彩。Tailwind CSS V4 内置了一套精心设计的调色板,全部使用 OKLCH 色彩模型,同时支持自定义颜色、任意值颜色、透明度语法。
💡 提示:V4 的内置调色板和 V3 大体上一致,但是底层色彩表示换成 OKLCH,颜色观感更均匀。
一、基础颜色工具类
颜色工具的命名格式:{用途}-{色系}-{色阶}
text-*:文字颜色bg-*:背景颜色border-*:边框颜色ring-*:轮廓环颜色outline-*:outline 轮廓颜色shadow-*:阴影颜色
示例:
<p class="text-blue-500">蓝色文字</p>
<div class="bg-emerald-600">绿色背景</div>
<div class="border-amber-400 border-2">琥珀色边框</div>
每个色系包含一组色阶,数字越小颜色越浅,数字越大颜色越深。
色阶包含:50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950。
500一般作为该色系的基准主色,是日常开发中最常使用的色阶。
二、内置调色板
Tailwind 自带多组色系,分为中性色和彩色。
中性色系(灰度)
中性色主要用于文本、背景、分割线。
slate:冷调灰,带一点蓝gray:标准灰色zinc:偏中性的灰,官方文档示例大量使用neutral:中性灰,饱和度极低stone:暖调灰,带一点黄
中性色推荐用来搭建页面基础骨架:页面背景、正文文字、次要文字、边框分割线。正文文字一般用
slate-800/zinc-800;次要文字用slate-500;页面背景用slate-50。
彩色系(功能色、强调色)
red:红色,错误、删除、危险提示orange:橙色amber:琥珀色,警告提示yellow:黄色lime:青柠绿green:绿色,成功、完成状态emerald:翡翠绿teal:水鸭青cyan:青蓝色sky:天蓝色blue:蓝色,默认主色、链接indigo:靛蓝violet:紫罗兰purple:紫色fuchsia: fuchsia(玫紫)pink:粉色rose:玫瑰红
<span class="text-red-500">错误</span>
<span class="text-green-500">成功</span>
<span class="text-amber-500">警告</span>
<span class="text-blue-500">信息</span>
特殊关键字颜色
这些颜色没有色阶,直接使用:
white白色black黑色current:继承当前元素文字颜色(currentColor)transparent:完全透明inherit:继承父元素颜色
current 在图标场景特别好用,SVG 的 fill 可以跟随文字颜色变化:
<svg class="w-5 h-5 text-blue-500 fill-current">
<!-- svg path -->
</svg>
三、透明度语法
在颜色后面加 /,后跟透明度值。透明度取值范围 0~100,代表不透明度百分比。
语法:{用途}-{色系}-{色阶}/{透明度}
<div class="bg-blue-500/75">75%不透明度蓝色背景</div>
<p class="text-red-600/50">50%不透明度红色文字</p>
<div class="border-green-400/30 border-2">30%不透明度绿色边框</div>
注意:这里的透明度是颜色通道透明度,不是全局
opacity。opacity会把整个元素连同子元素一起透明;bg-blue-500/50只让背景颜色透明,文字不受影响。
四、任意值语法(方括号语法)
如果内置调色板没有你需要的颜色,可以直接写任意色值,支持十六进制、rgb、hsl、oklch。
<div class="bg-[#ff00ff]">十六进制颜色</div>
<div class="text-[rgb(120,20,220)]">rgb颜色</div>
<div class="bg-[oklch(0.6,0.15,200)]">oklch颜色</div>
任意值同样支持透明度:
<div class="bg-[#165DFF]/60">自定义十六进制,60%不透明</div>
最佳实践:一次性、局部使用的特殊颜色,用任意值;项目全局反复复用的品牌色,不要写大量硬编码任意值,推荐定义主题颜色。
五、自定义颜色(@theme)
在 V4 中,使用 CSS 的 @theme 指令扩展颜色,不再依赖 JS 配置文件。定义后,就可以像内置颜色一样使用。
定义单色:
@import "tailwindcss";@theme {
--color-brand: #165DFF;
}
使用:
<button class="bg-brand text-white px-4 py-2 rounded">按钮</button>
定义一套多阶色,和内置色阶风格对齐:
@import "tailwindcss";@theme {
--color-brand-50: #f0f6ff;
--color-brand-100: #e6f0ff;
--color-brand-500: #165DFF;
--color-brand-600: #0e42d2;
--color-brand-700: #092fb3;
}
<div class="bg-brand-50">浅底色</div>
<button class="bg-brand-500 hover:bg-brand-600">主按钮</button>
自定义颜色同样支持 / 透明度语法:
<div class="bg-brand-500/50">半透明品牌色</div>
原理:
@theme定义的颜色会注册成 Tailwind 的颜色变量,底层是 CSS 变量。这意味着你可以用 JS 在运行时修改变量,实现动态换肤。
六、暗色模式颜色
暗色模式一般通过给根元素添加 .dark 类来切换。可以直接在 class 上写 dark: 变体。
<div class="bg-white dark:bg-zinc-900 text-zinc-800 dark:text-zinc-100">
亮色下白底黑字,暗色下深色底浅字
</div>
也可以在 @theme 中,在 .dark 选择器内覆盖主题变量:
@import "tailwindcss";@theme {
--color-page-bg: #ffffff;
--color-page-text: #1f2937;
}.dark {
@theme {
--color-page-bg: #121212;
--color-page-text: #e5e7eb;
}
}
<div class="bg-page-bg text-page-text">页面容器</div>
七、移除不需要的颜色(精简打包)
注意:这是 NPM 构建模式才生效,CDN 浏览器包不支持 tree-shaking。
Tailwind 默认会把全部调色板引入。如果你的项目不需要某些色系,可以在 @theme 中把颜色设置为 initial,打包时会被移除,减小最终CSS体积。
@theme {
--color-fuchsia: initial;
--color-rose: initial;
}
八、完整可运行 CDN Demo
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tailwind CSS V4 Colors Demo</title> <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script> <style type="text/tailwindcss"> @import "tailwindcss"; @theme { --color-brand-500: #165DFF; --color-brand-600: #0e42d2; } </style> </head> <body class="p-8 bg-zinc-50"> <h2 class="text-xl font-bold text-zinc-800 mb-4">内置颜色演示</h2> <div class="flex flex-wrap gap-3 mb-8"> <span class="px-3 py-2 rounded bg-blue-500 text-white">blue-500</span> <span class="px-3 py-2 rounded bg-green-500/70 text-white">green-500/70</span> <span class="px-3 py-2 rounded bg-red-500 text-white">red-500</span> <span class="px-3 py-2 rounded bg-amber-400 text-zinc-900">amber-400</span> </div> <h2 class="text-xl font-bold text-zinc-800 mb-4">自定义主题色</h2> <button class="px-4 py-2 rounded bg-brand-500 hover:bg-brand-600 text-white transition"> 品牌按钮 </button> <h2 class="text-xl font-bold text-zinc-800 mt-8 mb-4">任意值颜色</h2> <div class="px-4 py-3 rounded bg-[#722ED1]/80 text-white"> bg-[#722ED1]/80 </div> <h2 class="text-xl font-bold text-zinc-800 mt-8 mb-4">暗色模式测试(切换html.dark)</h2> <div class="p-4 rounded bg-white dark:bg-zinc-800 text-zinc-800 dark:text-zinc-100 border border-zinc-200 dark:border-zinc-700"> <p>亮色白底,暗色深色背景</p> </div> </body> </html>
九、常见踩坑
- 透明度
/xx语法,只能跟在颜色后面,不能单独写。bg-blue-500 /50中间不能加空格。正确写法bg-blue-500/50。 current是currentColor,只能继承元素文字颜色;它不是一个固定色值。- CDN 模式下,无法通过
--color-xxx:initial移除未使用颜色;tree-shaking 只在NPM构建打包时生效。 - 自定义颜色名称,推荐小写字母、横杠命名,不要使用特殊字符。
总结
Tailwind CSS V4 内置一套 OKLCH 调色板,提供 text-*、bg-*、border-* 等颜色工具。
- 优先用内置色系,快速搭建页面;
- 局部临时颜色,使用方括号任意值语法;
- 全局品牌色,用
@theme定义; - 使用
/百分比设置颜色透明度,区分于全局opacity; - 暗色模式可以用
dark:变体,或者覆盖@theme的CSS变量。
附录:Tailwind CSS V4 颜色速查表
/* 使用格式 */ text-{color}-{shade} bg-{color}-{shade} border-{color}-{shade}/* 色阶列表 */
50,100,200,300,400,500,600,700,800,900,950 /* 中性色 */
slate, gray, zinc, neutral, stone /* 彩色 */
red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose /* 特殊关键字 */
white, black, transparent, current, inherit /* 透明度 */
bg-blue-500/60 /* 自定义颜色 */
@theme {
--color-brand-500: #165DFF;
}/* 任意值 */
bg-[#ff00ff]
bg-[#ff00ff]/50
0 条笔记