ui-ux-pro-max

ui-ux-pro-max

UI/UX 设计智能。规划、构建、设计、实现、审查、改进 UI/UX 代码。风格:图片优先、编辑设计、极简主义、深色模式、响应式。项目:着陆页、仪表盘、SaaS、移动应用。

4Star
0Fork
更新于 2026/7/17
SKILL.md
readonly只读
name
ui-ux-pro-max
description

UI/UX 设计智能。规划、构建、设计、实现、审查、改进 UI/UX 代码。风格:图片优先、编辑设计、极简主义、深色模式、响应式。项目:着陆页、仪表盘、SaaS、移动应用。

UI/UX Pro Max

UI/UX 设计与实现的专业技能。

核心:「全部认真做」是 AI 生成感的本质。「舍弃什么」才是设计。

覆盖领域

  • 着陆页设计
  • 仪表盘 UI
  • SaaS 产品
  • 移动应用(响应式)

行动原则(5 条铁律)

1. 动手前先质疑

  • 对每个元素问「真的需要吗?」
  • 答案模糊时,先在没有它的情况下构建

2. 确定一个主角

  • 每个部分只确定一个「最想展示的东西」
  • 确定之前不要写代码

3. 不要并列 70 分

  • 所有元素存在感相同 = 失败
  • 让一个达到 120 分,其余 60 分

4. 说「我们放弃吧」而不是「可以」

  • 建议删除而非添加
  • 犹豫时就删掉

5. 先批评再构建

  • 列出当前问题的 3 个以上要点,再提出改进方案
  • 禁止说「感觉不错」

避免 AI 生成感

禁止事项

  • 所有元素存在感相同(均匀的留白、安全的颜色)
  • 缺乏决断(A 和 B 都可以,随你喜欢)
  • 过度装饰(无意义的渐变、动画)

禁止说「感觉不错」

  • 完成后也要附上「如果还有改进空间的话〜」
  • 被要求决断时就要决断(附上依据推荐一个)

高级设计公式

Premium = (图片质量 × 尺寸) + (留白) - (装饰)

三大支柱:

  1. 大图片 - 图片占据卡片面积的 70-85%
  2. 大胆的留白 - 区块间距 112px 以上
  3. 克制 - 所有效果必须有理由

参考品牌: Spitfire Audio, Native Instruments, iZotope


图片指南

上下文 图片尺寸 宽高比
产品卡片 卡片面积的 70-85% 16:9 或 4:3
英雄区 全视口宽度 可变
画廊网格 高度统一,宽度可变 混合

图片处理:

  • 图片是内容的主角
  • 文字最少(名称 + 一行说明)
  • 不要在图片上叠加功能列表
  • 使用高质量截图/渲染

留白令牌

令牌 用途
--space-section 112px 区块之间
--space-group 64px 相关内容之间
--space-element 24px 元素之间

区块内边距:

/* 高级区块 */
padding-top: 112px;    /* py-28 */
padding-bottom: 112px;

/* 紧凑区块 */
padding-top: 64px;     /* py-16 */
padding-bottom: 64px;

Tailwind 对应:

// 高级区块
<section className="py-28">...</section>

// 紧凑区块
<section className="py-16">...</section>

网格系统

列数 用途 间距
4 列 产品展示 24px (gap-6)
3 列 功能卡片、定价 32px (gap-8)
2 列 英雄区、对比 48px (gap-12)

视觉层次检查清单

开始前

  • [ ] 是否已明确「这个区块的主角是什么」
  • [ ] 是否考虑过「有没有可以删除的元素」
  • [ ] 能否解释「为什么用这个颜色」

进行中

  • [ ] 所有元素是否存在感相同
  • [ ] 视线流动是否符合预期
  • [ ] 背景是否干扰了内容

完成前

  • [ ] 在手机上 3 秒内能否知道「该做什么」
  • [ ] 是否存在「AI 生成感」的原因
  • [ ] 是否有「这里其实可以删掉」的元素

关键:无障碍优先

本节是最高优先级。无障碍优先于设计美观。

WCAG 2.1 对比度要求

文字大小 最小对比度
普通文字 (< 18px) 4.5:1
大文字 (≥ 18px bold / ≥ 24px) 3:1
UI 组件和图标 3:1

必须:使用项目的 globals.css

不要直接使用 Tailwind 默认颜色。 优先使用项目 globals.css 中定义的令牌。

// 错误:直接使用 Tailwind 默认值
<p className="text-slate-400">...</p>
<p className="text-slate-500">...</p>

// 正确:使用项目令牌
<p className="text-muted">...</p>
<p className="text-subtle">...</p>

实现前务必检查 app/globals.css,了解已定义的令牌。

徽章/标签的对比度

同色系组合危险:

// 错误:同色系对比度不足
<span className="bg-indigo-600/20 text-indigo-400">Badge</span>
<span className="bg-amber-500/20 text-amber-400">开发中</span>

// 正确:确保足够对比度
<span className="bg-indigo-600/30 text-indigo-300">Badge</span>
<span className="bg-amber-600/30 text-amber-200">开发中</span>

禁用状态的文字

// 错误:太淡导致对比度不足
<button className="text-white/50" disabled>...</button>

// 正确:禁用时仍可读
<button className="text-white/70" disabled>...</button>

多语言排版

为什么需要: 日文在相同字号下比英文视觉上更重(笔画多)。相同字号下日文显得拥挤沉重,因此缩小一级以平衡视觉效果。

排版令牌(已在 globals.css 中定义)

令牌 用途 英文 (桌面) 日文 (桌面)
.text-hero 着陆页主标题 96px 80px
.text-section 区块标题(h2) 48px 40px
.text-headline 功能标题、产品标题 30px 24px
.text-subhead 标语、导语 24px 20px

使用方法

// 错误:直接指定 Tailwind(无语言调整)
<h1 className="text-5xl md:text-8xl font-bold">...</h1>

// 正确:使用令牌(自动适配语言)
<h1 className="text-hero text-white">...</h1>

响应式适配

令牌已包含移动端、平板、桌面的响应式尺寸。无需额外指定断点。

// 错误:冗余的断点指定
<h1 className="text-hero sm:text-hero md:text-hero">...</h1>

// 正确:仅使用令牌
<h1 className="text-hero">...</h1>

适用范围

  • 着陆页标题(h1, h2)
  • 区块标题
  • 产品名、功能名
  • 标语、导语

注意: 不适用于正文(p 元素的长文)。正文使用 text-white/80 等常规样式。


设计令牌遵守规则

原则: 不直接使用 Tailwind 默认值,使用 globals.css 中定义的设计令牌。

圆角(Border Radius)

令牌 用途
--radius-sm 8px 小徽章、标签
--radius-md 12px 按钮、输入框
--radius-lg 16px 卡片、模态框
--radius-full 999px 药丸按钮、头像
// 错误:直接指定 Tailwind
<button className="rounded-lg">...</button>
<div className="rounded-xl">...</div>

// 正确:使用令牌
<button className="rounded-[var(--radius-md)]">...</button>
<div className="rounded-[var(--radius-lg)]">...</div>

颜色

// 错误:直接使用 Tailwind 颜色
<p className="text-slate-400">...</p>
<div className="bg-gray-900">...</div>

// 正确:使用项目令牌
<p className="text-muted">...</p>
<div className="bg-muted-bg">...</div>

令牌违规检查

实现后通过以下命令检查违规:

# 搜索直接指定圆角的 Tailwind
grep -r "rounded-sm\|rounded-md\|rounded-lg\|rounded-xl\|rounded-2xl" components/

# 搜索直接指定颜色的 Tailwind
grep -r "bg-slate-\|bg-gray-\|text-slate-\|text-gray-" components/

检测到的内容依次替换为令牌。


按钮样式

主要 CTA(默认:白色背景)

<button className="bg-white text-black px-8 py-4 text-lg font-medium rounded-[var(--radius-md)] hover:bg-white/90 transition-colors cursor-pointer">
  Download Now
</button>

次要(仅边框)

<button className="border-2 border-white text-white px-8 py-4 text-lg font-medium rounded-[var(--radius-md)] hover:bg-white/10 transition-colors cursor-pointer">
  Learn More
</button>

品牌专属(有限使用)

彩色按钮使用条件:

  • 仅限品牌专属区块(如 MUEDear amber)
  • 每页最多 1-2 处
  • 不作为默认样式
// MUEDear 用:amber
<button className="border-2 border-amber-500 text-amber-400 hover:bg-amber-500 hover:text-white ...">
  Download App
</button>

禁用状态

<button className="bg-white/5 text-white/70 cursor-not-allowed" disabled>
  Disabled
</button>

背景样式

使用的背景

// 高级:仅纯色
<section className="bg-black">...</section>
<section className="bg-[#0f0f0f]">...</section>
<section className="bg-white">...</section>

避免的装饰

模式 问题 替代方案
浮动发光球 分散注意力 删除
bg-gradient-to-b from-violet-900/20 装饰性噪音 纯色
颗粒纹理 不必要的复杂 删除
动画背景 性能下降 静态

卡片样式

图片中心卡片(默认)

<div className="bg-[#0f0f0f] rounded-[var(--radius-lg)] overflow-hidden">
  {/* 图片:卡片面积的 70-85% */}
  <div className="aspect-video">
    <Image src="..." alt="..." fill className="object-cover" />
  </div>
  {/* 文字:最少 */}
  <div className="p-6">
    <h3 className="text-white text-lg font-medium">产品名</h3>
    <p className="text-white/60 text-sm">一行说明</p>
  </div>
</div>

玻璃卡片(有限使用)

注意: 玻璃拟态仅用于特定上下文(定价表、功能对比等)。不作为默认样式。

<div className="bg-white/5 backdrop-blur-xl border border-white/10 rounded-[var(--radius-lg)] p-6">
  <h3 className="text-white font-semibold">Title</h3>
  <p className="text-white/80">Description</p>
</div>

使用玻璃卡片时的注意:

  • 文字使用 text-whitetext-white/80 以上
  • 不要使用 text-slate-*text-gray-*
  • 背景半透明,对比度计算复杂

指令升级协议

根据用户表达调整响应级别:

用户表达 解释 所需响应
「Spitfire 级别」「Native Instruments 级别」 全面视觉改造 不是微调而是完全重新设计
「更高级」 实质性变更 删除效果,增加留白
「干净点」 中等程度清理 删除 30% 装饰元素
「调整」「微调」 小修改 仅 CSS 变更

重要规则: 如果提到了参考品牌,在提出建议前将当前实现与该品牌进行比较。


实现检查清单

实现前检查

  • [ ] 是否有高质量的产品截图?
  • [ ] 文字能否减少 50%?
  • [ ] 是否确认了想要参考的美学标准?
  • [ ] 是否匹配了相应的克制程度?

实现中检查

问题 如果「否」则采取行动
区块内边距 >= 100px? 增加到 py-28 以上
图片占卡片面积 60% 以上? 放大图片
按钮是白色或仅边框? 从彩色改为白色/边框
背景是纯色(无渐变)? 删除装饰元素

实现后检查

  1. 眯眼测试: 眯眼看。能否识别产品?如果效果占主导则减少。
  2. 「删除一个」测试: 从每个区块删除一个元素。是否仍能工作?如果能,说明它是不必要的。
  3. Spitfire 对比: 将截图与 Spitfire.com 并排比较。视觉「重量」是否相似?

应避免的模式(明确禁止列表)

"Claude defaults to safe choices" - 如果不明确禁止,就会收敛到通用选择

背景和装饰

禁止模式 问题 替代方案
大量使用 bg-white/5 backdrop-blur-xl 「2023 模板」感 bg-blackbg-[#0f0f0f]
bg-gradient-to-b from-violet-900/20 装饰性噪音 删除
bg-gradient-to-br from-indigo-500/10 同上 删除
动画 blob 背景 分散注意力、性能下降 静态、纯色
颗粒纹理 (noise.svg) 不必要的复杂 删除
浮动发光球 2020 年代早期趋势 删除

阴影和发光

禁止模式 问题 替代方案
shadow-lg shadow-indigo-500/20 人为的「弹出」 无阴影或 shadow-sm shadow-black/20
shadow-xl shadow-violet-500/30 同上 同上
shadow-2xl shadow-amber-500/25 同上 同上
hover:shadow-*-500/40 悬停时发光强调 使用 hover:bg-white/10 等克制效果
drop-shadow-[0_0_*px_rgba()] 自定义发光 删除

布局

禁止模式 问题 替代方案
带图标的 3 列功能网格 通用 SaaS 设计 大图片 + 最少文字
均匀的 3 列卡片(同尺寸) 「所有元素存在感相同」 一个放大,其余缩小
py-12 以下的区块间距 拥挤 py-28 (112px) 以上
全部居中 过于安全 考虑左对齐或不对称

组件

禁止模式 问题 替代方案
hover:scale-105 + hover:shadow-* 过度的悬停效果 hover:bg-white/10
transition-all duration-300 沉重、不可预测 transition-colors duration-200
group-hover:translate-x-2 箭头 常见模式 删除或 translate-x-1
彩色 CTA 按钮(默认使用) AI 安全选择 白色背景或白色边框

动画

禁止模式 问题 替代方案
分散的微交互 缺乏统一感 集中在一个页面加载效果
大量使用 animate-pulse 分散注意力 删除或仅一处
持续 animate-bounce 同上 仅在用户操作时
多个元素同时动画 混乱 使用 staggered delays 依次进行

颜色(AI 安全选择)

禁止模式 问题 替代方案
紫色渐变 on 白色背景 最通用的 AI 选择 纯色深色
from-violet-600 to-indigo-600 同上 删除
默认使用 text-indigo-400 滥用品牌色 text-whitetext-white/80
同色系徽章(indigo on indigo) 对比度不足 白色背景 + 黑色文字

图标

  • 使用的库: Lucide Icons
  • 禁止: 不要使用 emoji 作为图标
import { Music, Brain, Sparkles, Check, X } from 'lucide-react';

响应式断点

/* Mobile first */
/* sm: 640px */
/* md: 768px */
/* lg: 1024px */
/* xl: 1280px */
/* 2xl: 1536px */

应验证的屏幕宽度:

  • 320px (最小移动端)
  • 768px (平板)
  • 1024px (桌面)
  • 1440px (大屏)

交付前检查清单

  • [ ] Lighthouse 无障碍 100%(最重要)
  • [ ] 使用项目的 globals.css 令牌
  • [ ] 图片是否成为主角
  • [ ] 区块间距 >= 112px (py-28)
  • [ ] 按钮是否基于白色/边框
  • [ ] 背景是否纯色
  • [ ] 不使用 emoji 图标(使用 Lucide)
  • [ ] 深色模式支持
  • [ ] 可点击元素添加 cursor-pointer
  • [ ] 响应式适配
  • [ ] 性能优化(图片、动画)

对比度确认方法

实现后务必使用 Lighthouse 检查无障碍:

# 本地检查
npm run dev
lighthouse http://localhost:3000 --only-categories=accessibility --view

# 查看详细失败项
lighthouse http://localhost:3000 --only-categories=accessibility --output=json | jq '.audits["color-contrast"]'

目标:Lighthouse Accessibility Score 100%