CSS 变量提取
CSS Token Extractor
从样式表里把颜色、间距、圆角和字体值抽出来,并提议一套自定义属性。
读取一份样式表,数出里面的每个颜色、长度、圆角、字体和阴影,并为每一个提议一个 `--variable`,按使用频率排序。然后它可以改写样式表来使用它们。它是建立在 CSS 格式化工具的分词器上的声明扫描器,不是完整的解析器,也不是 linter——它告诉你文件里有哪些值,这是手动做起来乏味的那部分。
CSS 输入
把 .css 文件拖进来
只在这个标签页里读。
建议的令牌
加在前面,像 --app-color-1 那样。
声明
29
颜色
11
间距值
5
圆角
3
字体
1
本来就有的变量
1
颜色 11
- #6366f1×2
- #fff×2
- #1f2937×1
- rgba(0,0,0,.06)×1
- rgba(0,0,0,.08)×1
- #111827×1
- #4b5563×1
- #4f46e5×1
- #eef2ff×1
- #4338ca×1
- #e5e7eb×1
间距 5
- 4px×1
- 8px×3
- 16px×4
- 24px×3
- 32px×1
圆角 3
- 8px×1
- 12px×1
- 999px×1
字号 3
- 12px×1
- 14px×2
- 20px×1
行高 1
- 1.6×1
字体 1
- "Pretendard", system-ui, sans-serif×1
阴影 2
- 0 1px 2px rgba(0,0,0,.06)×1
- 0 8px 24px rgba(0,0,0,.08)×1
它是怎么读这个文件的
- · 用 CSS 格式化工具的分词器来读,所以
url()、字符串里的#fff都不会被当成颜色,calc()也原样留着。 - · 颜色统一归到十六进制,所以 #FFF、white 和 rgb(255 255 255) 会并成一条,并带上出现次数。名字按使用频率编号,所以 --color-1 一般就是品牌色或正文色——记得自己改名。
- · 间距只从 margin、padding、gap 和 inset 系列里取,圆角只从 border-radius 里取,按大小编号。width 和 height 不算进来:它们是尺寸,不是节奏。
- · JSON 用的是 W3C Design Tokens(DTCG)草案的形状,带 $type 和 $value。“改写成 var() 的 CSS”只替换完全相同的值,其他字符一个都不动。
怎么用
粘贴样式表,或拖入文件
一次一个文件。最先加载的示例是为了在你去找自己的 CSS 之前先展示输出的形状。
先读计数,再读 token
一个本该有十二种颜色的文件里有四十种,这就是发现。下面的分组列表显示每个值和它出现的次数,所以值得命名的在顶部,而一次性的——通常是错误或死规则——在底部。
项目需要的话设一个前缀
留空给出 `--color-1`;输入 `app` 给出 `--app-color-1`。无论哪种,数字是使用排名而不是含义,所以弄清每个值是干什么的之后要重命名它们。
取变量、JSON,或改写后的文件
CSS 输出是一个粘到顶部的 `:root` 块。JSON 是 W3C Design Tokens 草案的形状,给构建步骤或设计工具用。改写是原样式表,只把精确匹配的值换成 `var()`,其他一概不动——提交之前读一下差异。
常见问题
改写后的 CSS 可以原样上线吗?
先读差异。替换是文本的、只做精确匹配,所以它不会弄坏一个它不认识的值,但它也无法知道两个相同的灰色意味着两件不同的事——一个边框色和一个禁用标签碰巧共享同一个十六进制,会得到同一个变量,之后有人改了其中一个。正确地命名 token 是抓住这一点的步骤,而它是人的步骤。
为什么间距列表里没有宽度和高度?
有意的。间距是一种节奏——外边距、内边距、间隙、内嵌——设计系统把它 token 化。宽度和高度是尺寸:一个 240px 的侧栏和一个 44px 的点击目标不是同一个刻度上的两个点,把它们放进列表会埋掉真正属于刻度的值。
它处理 SCSS、Less 或 CSS-in-JS 吗?
只有纯 CSS 可靠。分词器能读过大部分 SCSS,但嵌套、`@mixin` 体和插值不会被解析,所以计数会漂移。先编译再扫描输出——那也是浏览器实际看到的文件。
它在 URL 里找到了一个颜色。真的吗?
没有——这种情况已经处理了。扫描跑在 CSS 格式化工具的分词器上,所以 `url()` 或字符串里的 `#fff` 是字符串,`calc()` 保持完整而不是被拆成长度。这是正则表达式会在这里出错的两个地方。
可以从这些接进来
CSS 美化与压缩
CSS Beautifier & Minifier
格式化或压缩 CSS,不重排任何声明,原本的记号序列一个不动。
配色方案生成
Palette Generator
从一个基准色出发,按互补、三分和邻近色规则生成协调的配色。
深色模式配色转换
Dark Mode Palette
从一个颜色做出 50–950 的色阶,再镜像成一套深色色阶,让每一对变量保持原来的对比度。
Tailwind 最接近色查找
Nearest Tailwind Colour
为任意颜色找出最接近的 Tailwind 调色板取值,并给出感知色差。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
色阶生成
Tint & Shade Scale
从一个颜色生成 50–950 的明度色阶,步进在感知上均匀,可直接当设计变量用。
CSS 美化与压缩
CSS Beautifier & Minifier
格式化或压缩 CSS,不重排任何声明,原本的记号序列一个不动。
深色模式配色转换
Dark Mode Palette
从一个颜色做出 50–950 的色阶,再镜像成一套深色色阶,让每一对变量保持原来的对比度。
配色方案生成
Palette Generator
从一个基准色出发,按互补、三分和邻近色规则生成协调的配色。
颜色格式转换
Colour Format Converter
在 HEX、RGB、HSL、HWB、LAB、LCH 和 OKLCH 之间换算同一个颜色,并给出最接近的已知色名。
颜色拾取器
Colour Picker
在 OKLCH 色板上选色,也可以用屏幕吸管或从上传的图片里取色,并按任意表示法复制出来。