让AI写前端不难,难的是让它别那么AI里AI气

最近用 AI 写了不少前端页面,有个感受越来越强烈:它写结构、接逻辑、处理响应式都没问题,但出来的东西——你懂那种感觉——一眼就知道是 AI 出的。

也不是说丑。就是那种很标准的、很正确的、毫无个性的「AI 风」:蓝紫渐变背景,白色圆角卡片,毛玻璃按钮,再撒几个 emoji 当图标。你说它错吧,也不算错。你说它好吧,那也不至于。

最烦的是,每次改完这个项目,下个项目又是同一套。因为 AI 的审美默认值是固定的,你不干预,它就永远往那个方向走。

后来我琢磨出两条路:一条是在 prompt 里把约束写死,告诉它什么不能做;另一条更偷懒——直接把别人的设计语言打包丢给它,连描述都省了。两条路我都在用,下面聊聊。

先搞定「什么不能做」

整理一份规则清单,放进 CLAUDE.md 里。核心逻辑就一句话:在 AI 动手之前就把审美红线画好,别等生成出来再骂它。

踩坑踩多了,最该拦住的就这五件事——

1. 蓝紫渐变,给我停

AI 一看到「科技感」三个字,条件反射就是 linear-gradient(to right, #6366f1, #8b5cf6)。不管你是做财务系统还是博客,它都给你整上这个渐变。然后一个页面里塞五六种颜色,主色辅色强调色状态色全部摊开,活像组件库演示页。

❌ 别这样

  • 蓝紫渐变铺满背景
  • 霓虹色、彩虹色点缀
  • 一个视图里超过 3 种品牌色

✅ 这样来

  • 所有颜色走 CSS 变量
  • 背景只用白色或浅灰
  • 主色一个、辅色一个,强调色克制使用

把颜色锁在变量上之后,整个页面的一致性直接上了一个台阶。不是因为变量有多神奇,而是 AI 每次取色都从同一套系统里拿,不会再东一个西一个。

2. emoji 和毛玻璃,再见

没有图标库的时候,AI 拿 🔥💡✅🚀 充数。产品界面不是聊天消息,emoji 一上来就把质感拉低了。

毛玻璃(backdrop-filter: blur(10px))也是同理。AI 觉得加了毛玻璃就有「高级感」,但毛玻璃成立的前提是底色和层次都对。随手加上去,出来的不是通透,是脏。

我的规则很简单:指定一套图标库(Lucide / Heroicons / Phosphor 随便哪个),然后直接禁掉 emoji 图标和毛玻璃,除非我显式要求。

3. 别什么元素都浮着

AI 特别爱给每张卡片加 box-shadow,再配上 border-radius: 16px 和半透明描边。单看一张没问题,满屏都是这结构就廉价了。当所有元素都在「浮」的时候,层次感反而消失。

我现在的规矩:一个页面最多两层阴影,大部分元素不需要阴影。卡片用 border 或 shadow 二选一,不叠加。圆角统一 6px 或 8px,不要 16px+。

4. 字号阶梯,固定六档

AI 写字体有个毛病:一处 1.5rem,一处 24px,再来一处 large。三种单位、三种取值逻辑散在不同组件里,文字层级全乱。

我锁死了六档:12 / 14 / 16 / 20 / 24 / 32,全部定义为 CSS 变量。单位统一,不许混着来。字号只能从这六档里选,不准自己算一个。

5. 内联样式和魔法值

style="padding-top: 13px; margin-left: 7px"——这种魔法数字每次都不一样,没法复用也没法维护。颜色也是,#1a73e8#4285f4 都是蓝色,但彼此没关联也没语义。改一处得全局搜,漏一个就是 bug。

所有设计值走变量,间距走 4px 网格(4/8/12/16/24/32/48/64),禁止出现 13px、7px、23px 这种奇怪数字。

核心思路

上面五条总结成一句话:不是限制 AI 的发挥,而是让它从一套预设系统里取值,而不是每次随机。 一旦颜色、字号、间距都锁定在变量上,组件之间自然就有一致性了。

再搞定「我想要什么样的」

前面说的是「防负分」——把最拉垮的默认值挡掉。但如果你的需求是「我想让页面看起来像 Notion」或者「我想要 Vercel 那种冷淡感」,光靠禁止清单不够,你还得告诉它你想要什么。

问题来了——你描述得出来吗?

我知道自己不喜欢 Bootstrap 默认蓝,但你要我用文字描述出「Vercel 那种调调」具体是什么,我确实说不清楚。能感知到区别,但写不出来。

后来发现一个开源项目叫 awesome-design-md,它的思路我特别认可:你不用描述好看是什么,直接把别人的「好看」打包成文件丢给 AI。

DESIGN.md 是什么

这个项目把 Notion、Spotify、Vercel、Figma 这几十家公司的视觉语言——颜色色值、字体族、间距规则、圆角参数、按钮样式、排版节奏——全提炼成一个 markdown 文件。

拿 Spotify 的举例,里面大致长这样:

类别 写什么
颜色 主色 #1DB954,背景 #121212,精确到每个角色
字体 字体族、标题多大、正文多大、行高、字重变化
间距 元素之间留多少空间,4px / 8px 的倍数网格
组件 按钮圆角、卡片阴影、描边粗细、hover 怎么变
排版 内容区最大宽度、对齐方式、分区间距

一个品牌的视觉 DNA,差不多就是这五样东西。AI 拿到这份文件,就像一个干活飞快的前端拿到了设计稿——不用猜,照着来。

用起来的效果

有人做过实验:同一句 prompt,分别挂上 Claude、Spotify、Vercel、Figma 四份不同的 DESIGN.md,生成同一个虚构产品的官网首页。

文案一字不改,页面结构一模一样,出来的四张页面气质截然不同。你一眼就能认出哪个是 Spotify 那种暗黑+绿调,哪个是 Vercel 那种冷白+黑字。

变的内容是零,变的感受是全部。这就是设计系统的力量。

怎么上手

1

找一份 DESIGN.md。去 GitHub 搜 awesome-design-md,挑一个你喜欢的品牌风格,把文件内容复制出来。

2

和 prompt 一起喂给 AI。把「我要做什么页面」的描述 + DESIGN.md 内容一起丢进去,加一句「严格遵循 DESIGN.md 的设计规范」。

3

微调收尾。第一次生成通常能到 80 分,剩下 20 分让 AI 迭代或者自己改 CSS。比从零开始快太多。

有意思的是,因为 DESIGN.md 是纯文本,你可以把不同品牌的规则混搭——比如用 Figma 的颜色系统 + Vercel 的排版节奏,创造出一种谁都不像但又很舒服的风格。这事儿截个图扔给 Google Stitch 是做不到的。

现在的完整规则

两套方法结合之后,我目前在 CLAUDE.md 里放的就是下面这份完整版。前面是通用的设计约束,后面根据项目需要再挂一份 DESIGN.md。直接抄走改改就能用:

css
# Frontend Design System Rules

## Color System
- Define CSS variables: --color-primary, --color-secondary,
--color-neutral-*, --color-success, --color-warning, --color-error
- Backgrounds: white (#ffffff) or light gray (#f8f9fa, #f3f4f6) only
- No gradients on backgrounds or buttons
- No blue-purple gradients anywhere
- No neon colors, no rainbow palettes
- No more than 3 brand colors in any single view
- Text: #111827 (primary), #6b7280 (secondary), #9ca3af (tertiary)

## Typography
- Font scale: 12px / 14px / 16px / 20px / 24px / 32px
- CSS variables: --text-xs / --text-sm / --text-base /
--text-lg / --text-xl / --text-2xl
- Body: font-weight 400, line-height 1.5
- Headings: font-weight 600, line-height 1.25
- Pick one unit system (px or rem), do not mix
- No arbitrary font sizes outside the defined scale

## Spacing
- 4px base grid: 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64px
- CSS variables: --space-1 through --space-16
- No magic numbers (13px, 7px, 23px, etc.)
- Consistent padding within component families

## Components
- Cards: border OR shadow, not both
- Shadow level 1: 0 1px 3px rgba(0,0,0,0.08)
- Shadow level 2: 0 4px 12px rgba(0,0,0,0.1)
- Border radius: 6px or 8px, no 16px+
- Buttons: solid fill, no gradient; hover darkens 10%
- Inputs: 1px solid #d1d5db, radius 6px, no glow on focus

## Icons
- Use one icon set consistently: Lucide / Heroicons / Phosphor
- Size: 16px inline, 20px standalone
- No emoji as functional icons

## Forbidden
- No blue-purple gradients
- No glassmorphism unless explicitly requested
- No emoji icons
- No shadows on every element
- No inline styles for color, spacing, or typography
- No magic numbers — every value references a design token
- No more than 2 shadow depth levels per page

一点感想

说实话,规则本身不难写,难的是意识到需要写。我之前一直觉得「AI 写的前端就这样吧」,每次生成完手动调半天,然后下个项目又重蹈覆辙。

后来想通了:AI 不笨,它只是没人告诉它审美边界在哪。把约束提前写好,它每次生成都从更高的起点出发。再懒一点,直接塞一份 DESIGN.md,连边界都帮你定义好了。


参考项目:awesome-design-md

那年 • 今日
老王于2026-05-18 11:25发布在网页设计
楚客追梦情难休,万里追寻志未酬。

赞助 点赞 2

上善若水, acevs, obaby等人对本文发表了3条热情洋溢的评论。
  • 上善若水学前班友邻
    三甲

    研究得很透彻啊,我就随意多了,没约束这么多,不满意了再改改改,每次要折腾很久

  • 不过的skill 文档,教程。

  • ai能达到效果就算不错了,有时候跟智障一样,功能都实现不了,这时候看着更蛋疼。
    话说这个ai里ai气的描述非常准确,哈哈哈。尤其是那一堆图标,我也是看了就恶心。

  • 头像预览

    发表评论

    您的邮箱地址不会被公开, 必填项已用 * 标注

    找回密码

    请输入您的邮箱地址,我们将向您发送重置密码的链接。

    您好,朋友!

    请输入相关信息,以便我们提供更优质的服务!

    欢迎回来!