企业官网 / 产品网站 / 落地页的审美标准与搭建流程。公开链接,任何账号都可下载复用。
一键安装(Claude Code,默认 ~/.claude/skills)
curl -fsSL https://web-design-master-skill.pages.dev/install.sh | bash
装到 Codex 或其它目录
curl -fsSL https://web-design-master-skill.pages.dev/install.sh | bash -s -- ~/.codex/skills
Grok Bot 等其它助手:把这句话发给它——「读取 https://web-design-master-skill.pages.dev/raw/SKILL.md 和 references,存成一个 skill」。
参考文件:
这份总 skill 合并了三部分内容:
- 三个已上线或已交付的静态站的实践:工业 B2B 企业站(深色石墨 + 单一橙色、三语)、个人公司站(瓷白 + 深墨 + 衬线)、AI 服务站(瓷白 + 无衬线 + 口号排版)。
- 网站skill/ 合集里的 13 个开源设计 skill。
- AI-Design-Skills/。
各条规则的出处见第 7 节,各来源文件夹的地址见 references/sources.md。
用法: - 新站从第 1 节按顺序做。 - 改版或打磨现有站:先读该站的 DESIGN.md,再用第 2、3、5 节自查。 - 用户已确认的方向优先于本文件的默认值(brief wins)。原则 0 和无障碍底线除外。
ECS_ROOT_PASSWORD=***。web-design-skills 没有许可证,只能参考,不要复制原文。README.md 里的「内容依据」和「【待填】清单」,加一张事实表(项目 / 中文 / 英文 / 出现位置)。awesome-design-md/design-md/<品牌>/DESIGN.md 挑一份风格参考。DESIGN.md,包括:npx @google/design.md lint DESIGN.md 校验。:root 变量,起始模板见 references/design-tokens-template.css。grep -nE '#[0-9a-fA-F]{3,6}' assets/*.css,结果应只出现在 token 区和 print 区。scripts/build_site.py)输出独立的静态 HTML。生成器和手改的 HTML 必须同步,否则下次生成会覆盖手改的内容。text-wrap: balance,正文用 pretty。assets/images/sources.json,记原文件、尺寸、授权。.image-frame 容器统一比例、细边框和说明文字。contain,保持完整。<picture> 里 (max-width: 767.98px) 指向 -mobile.svg。-en / -ja 后缀。<picture class="atmo-bg" aria-hidden="true"> 作为 .has-atmo 区块的第一个子元素,img alt="" loading="lazy" decoding="async"。首屏背景例外,改用 fetchpriority="high",不懒加载。::after 渐变遮罩,保证文字达到 AA。参考值:浅色遮罩不透明度 ≥ .92,深色遮罩 ≥ .84,按底图的黑白极值做保守计算。picture.atmo-bg[aria-hidden=true] 里的图豁免非空 alt。gpt-image-bridge,命令是 ~/.claude/skills/gpt-image-bridge/bin/gpt-image-2 "<详细的美术指导 prompt>" /绝对路径/out.png [--size WxH]。width / height。首屏图 fetchpriority="high",首屏以下懒加载;用 WebP / AVIF。首页总重 ≤ 1.5MB(taste-web-performance)。详见第 3 节,模板见 references/motion-template.js。先在 DESIGN.md 的动效表里列清楚,再实现。
详见第 4 节。从 320px 写起(mobile-first),断点用 768 / 1024 / 1280。
zh/ en/ ja/ 目录,各语言文件名严格一致。根目录 index.html 是语言选择页,作 x-default。lang 属性。<html lang="zh-CN|en|ja">。CSS 用 :lang(zh-CN) / :lang(ja) 分别调标题字号和行高;日文 / 中文行高要比英文大,例如手机 H1 中文 36px / 1.25,日文 34px / 1.3,英文 40px / 1.15。build_ja.py 加一张译文表。<title> 和 description、canonical。hreflang:各语言加 x-default。Organization JSON-LD,只写确认过的字段。sitemap.xml 包含根页面和全部本地化页面;robots.txt 指向 sitemap。https://example.com 占位并标【待确认】,确认后在生成器里改一处 BASE。:focus-visible 用 2px 强调色,outline-offset 3–4px;深色区块里改用亮色。aria-invalid / aria-errormessage,并把焦点移到第一个错误。aria-hidden,纯图标按钮要有可访问名称。动画数字给屏幕阅读器读最终值。用 Playwright(Python 或 Node)脚本加截图做验证,清单见第 5 节和 references/verify-checklist.md。
.git、scripts、screenshots、源图、.agents/。cd /tmp/cfdeploy && export CLOUDFLARE_ACCOUNT_ID=<账号ID> WRANGLER_CACHE_DIR=/tmp/cfdeploy/.cache && wrangler pages deploy <部署目录> --project-name=<项目名> --branch=main --commit-dirty=true*.pages.dev 在国内访问不稳定。中文主站长期放在国内服务器上更好,前提是先办 ICP 备案。<目录>.bak-时间戳)。git archive 打包上传,原子替换本站目录。default_server 和别人的端口。nginx -t 通过后才 systemctl reload nginx,失败就回滚本站 conf。screenshots/<版本>/,包括:verification.json,记录各项检查、错误数、外部请求数和截图清单。方向 - [ ] 有一句话方向和一份 DESIGN.md,所有页面共用同一套 token。 - [ ] 大胆只用在一处,即一个"让人记住的东西"。通常是首屏最有行业代表性的真实画面或一句话,其余部分保持克制。完成前"摘掉一件配饰"(frontend-design)。 - [ ] 亮色还是暗色按使用场景选,不按行业惯性选(impeccable)。
色彩 - [ ] 中性色 60%、结构色(细线 / 边框)30%、一个强调色 10%(taste-color)。 - 强调色只用在主按钮、链接、激活态、焦点和关键数字上。 - 状态色只表示状态,不作装饰。 - [ ] 表面分 2–3 层,例如 paper / surface / panel;文字分 3 档:主 / 正文 / 辅助。 - [ ] 细线颜色不承担控件边界;输入框边界另设 token,且 ≥ 3:1。 - [ ] 背景用纯色,不用渐变。渐变只用于图上保证可读性的遮罩。不要紫蓝渐变、发光、玻璃拟态,也不要每张卡片下都铺一层软阴影。 - [ ] 主按钮上的文字和按钮底色对比度要算过。浅色强调色上通常用深色字。 - [ ] 照片保留实物颜色;如需统一,可以用 CSS 灰度,但不改原图。
字体
- [ ] 最多两套字体。国内站默认用系统字体栈,不下载字体。
- 中文:PingFang SC、Hiragino Sans GB、Microsoft YaHei、Noto Sans CJK SC。
- 衬线标题可以用:Songti SC、Noto Serif CJK SC。
- mono 只用于真实的技术数据和测量值,计数加 tabular-nums。
- [ ] 字重 ≤ 3 种,推荐 400 / 500 / 600。不用斜体,不用伪粗体。
- [ ] 字号固定档位,不留随意数值。
- 推荐 12 / 14 / 16 / 18 / 20 / 24 / 32 / 48 / 64px,或五档制:注释 13、正文 16、提要 22、区块 clamp(1.75rem, 3.2vw, 2.6rem)、页面 clamp(2.2rem, 4.8vw, 3.75rem)。
- 首页 H1:桌面最大约 64–84px,手机 28–40px。
- [ ] 行长:正文 45–75 字符,中文约 38em,英文 ≤ 72ch。行高:正文 1.6–1.8,标题 1.05–1.25(中日文取高值)。
- [ ] 正文 ≥ 16px,任何文字 ≥ 12px(手机端辅助文字 ≥ 14px)。iOS 上输入框 ≥ 16px,防止聚焦时页面放大。
- [ ] 标题在中文语义完整处断行,不出现孤字(text-wrap: balance)。
网格与留白
- [ ] 12 列网格 repeat(12, minmax(0, 1fr))。
- 容器最大 1240–1280px,居中;1920 宽屏时只加宽两侧,正文行长和网格不变(hallmark)。
- gutter:桌面 32px,手机 16px。
- 两侧边距:桌面 ≥ 48px,手机 20–24px,或用 clamp(20px, 5vw, 64px)。
- [ ] 间距只用档位 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96 / 128 / 160px。
- [ ] 区块之间的距离:企业 / 工业站桌面 96px、手机 64px;编辑式 / 奢华站 clamp(96px, 12vw, 160px),quiet-luxury 要求 ≥ 140px。首屏上下留白 ≥ 18vh(编辑式)。
- [ ] 标题上方的空间大于下方,同组元素靠紧,不同组拉开。
- [ ] 用细线和留白分组,不要把内容切成一排同样圆角、同样阴影的卡片,更不要卡片套卡片。
- [ ] 不对称分栏,例如 7/5、5/7、7 + 1 空 + 4,比平均三栏更像"设计过的"。
形状 - [ ] 圆角一套到底。工业 / 编辑风用 0–2px(弹窗 4px);B2B SaaS 用 6–8px;胶囊形只给小标签。 - [ ] 层次只用一种方式表达:边框或阴影,二选一。不要用 4px 4px 0 那种硬投影,除非方向本身就是新粗野主义。
首屏 - [ ] 一张真实主视觉,或一句排版本身就是视觉的话,加一句说明、一个主 CTA 和最多一个次 CTA。不要用"大数字 + 小标签 + 渐变"的默认套路。 - [ ] 1280×800 和 390×620(微信内置浏览器的可用高度)下,标题、主 CTA 和关键承诺都在首屏内。 - [ ] 首屏约 80 字以内(hallmark)。
"AI 味"反模式,看到就改(frontend-design、taste-skill tells、hallmark、impeccable) - 紫蓝渐变、渐变文字、发光按钮、玻璃卡片、每张卡片下的灰色软阴影。 - 三张一样的图标卡片,图标还放在圆角方块里;Bento 圆角拼块墙;卡片套卡片。 - 每个标题上方都有全大写字距拉开的眉标(eyebrow),Hero 上方有 "New" / "Beta" 胶囊。 - 标题里只给一个词换色或改斜体。 - 用中点串起来的元信息(A · B · C),链接文字后硬加 "→",装饰性的"在线"小圆点。 - 内容不是序列却用 01 / 02 / 03 编号;拿 mono 字体冒充"技术感"。 - 用灰条和环形图拼出来的假仪表盘,emoji 当图标。 - 每个区块都"淡入上滑",视差、自动轮播、循环漂浮。 - Lorem ipsum、Acme、"张三"、99.99%。
浏览器细节(impeccable craft-floor) - [ ] 选区颜色、光标颜色、滚动条、焦点环、下划线偏移、表格数字都按色板主题化。 - [ ] 每个交互元素都有 hover、active(缩到 0.98 或下沉 1px)、focus、disabled、loading 和错误态,空状态要给出引导。
transform 和 opacity。 永远不写 transition: all,不对 width / height / top / left / margin 做动画,不设常驻 will-change,滚动时不测量布局。scale(1 → 1.04 至 1.06),18s,alternate。这是唯一允许的"环境慢动",减少动态时关闭。cubic-bezier(.22, 1, .36, 1) 或 ease-out。cubic-bezier(.4, 0, .2, 1)。ease-in-out 当万能曲线。IntersectionObserver,同时负责内容块和计数。opacity 0 → 1 加 translateY(12–20px → 0)。unobserve。rootMargin: 0px 0px -24px 0px;已经滚过视口的元素(top < 1)也立即显现,快速滑动时不会卡在隐藏状态。<head> 里第一时间给 <html> 加 .js 类。.reveal.is-pending。.js .reveal.is-pending。没有 JS 或没有 IntersectionObserver 时,内容全部可见。requestAnimationFrame,约 1100ms,easeOutCubic。.sr-only 里的固定数字,动画副本加 aria-hidden="true",数字宽度用 tabular-nums 固定。change:断开观察器、取消计数帧、恢复所有最终值。scale(1.03–1.04),600ms,只在 (hover: hover) and (prefers-reduced-motion: no-preference) 下生效。scaleX 绘入。按钮背景过渡 200ms,按下时下沉 1px。?static,或 html[data-static] 时,所有入场动画直接定格为可见。overflow-x: clip,不用 hidden,也不用 100vw(hallmark)。minmax(0, 1fr),标题加 overflow-wrap: break-word; min-width: 0。<picture> 换成更清晰的竖版或深色图,并单独设 object-position。aria-hidden),旁边是视觉隐藏的文字。white-space: nowrap,在 320–430px 下永不换行。aria-expanded 随开合切换,aria-label 写"打开菜单"。inert,锁定滚动(body position: fixed 加 top: -scrollY),关闭后恢复滚动位置。html:not(.js) nav { display: flex })。padding-bottom: calc(8px + env(safe-area-inset-bottom))。padding-bottom,html 加 scroll-padding-bottom,避免遮住内容和表单按钮。env(safe-area-inset-*)。高度用 100dvh / 100svh,并写 100vh 作回退。<dialog> 弹出显示,可以复制号码,提供关闭按钮。Escape、点遮罩都能关闭,焦点限制在弹窗内,关闭后焦点回到触发按钮。MicroMessenger 的 iPhone UA,390×664 和 390×620。tel:+86xxxxxxxxxxx 链接。有多个号码时标出主号和(备用),顺序和 JSON-LD 一致。white-space: nowrap(比如包成 .value-token),避免从中间断开;邮箱和长链接用 overflow-wrap: anywhere。python3 -m http.server 8000,跑 Playwright 脚本,跑完关掉服务器。src / href / srcset 都存在并返回 200,语言切换到同名页。method="dialog" 或禁用 fieldset)。?v= 是新版本号。verification.json。node -v。taste-skill、website-rebuild、hallmark 的脚本也需要 Node 22+。/node_modules/.cache): 在根目录或只读目录里运行会报这个错。换到可写目录(如 /tmp/cfdeploy)运行,并设置 WRANGLER_CACHE_DIR。wrangler login --browser=false,把链接拿到浏览器里授权;取 token 卡住时,结束进程重新来。已经登录的共享账号不要重新登录,以免影响其他助手。foo.html 308 重定向到 foo:.html 也能用,只是多一次跳转。style.css?v=YYYYMMDD-tag,全站一起改,否则 CDN 和浏览器会继续用旧文件。--commit-dirty=true。部署目录要单独组,别把 .git、scripts、源图传上去。reduced_motion='reduce',等 document.fonts.ready 和所有图片 decode() 完成,并断言 .reveal.is-pending 的数量为 0。python -m http.server 不会把不存在的路径转到自定义 404,要直接访问 /404.html 检查。scroll-padding-bottom 和 scroll-margin-bottom。*.pages.dev 不稳定,Google Fonts 和国外 CDN 也不稳定。国内服务器绑域名要先做 ICP 备案(备案完成前,域名访问会被拦截),备案号要放进页脚。default_server;先跑 nginx -t;回滚只回滚本站的配置。改安全组或端口前先告诉用户。| 规则 | 来源 |
|---|---|
| 只用真实信息,不编造指标、评价、logo 墙;缺的写【待填】 | 三个站点的 README / DESIGN(linghengmake-site、lingheng-tech-site、ai-planner-site);hallmark Floor 8;landing-page-design B8 |
| 先定方向和 4–6 个色值,两遍法自审,大胆只用一处,"摘掉一件配饰" | frontend-design |
| DESIGN.md 是统一规范,AI 照着做;YAML token 加 prose 的格式 | awesome-design-md、google-design-md、impeccable(PRODUCT.md / DESIGN.md)、ai-planner-site AGENTS.md |
| 先问四件事(材料 / 受众 / 用途 / 语气),一次问完;mirror test | hallmark |
| 模式区分(Persuade / Operate / Read / Experience)、brief wins、浏览器细节主题化、craft floor | impeccable |
| AI 味"tells"登记表(眉标、胶囊、渐变文字、等大卡片、假仪表盘) | taste-skill references/tells.md、hallmark、impeccable craft-floor、frontend-design |
| 60-30-10 配色、单一强调色、OKLCH 色阶、WCAG 数值、语义 token | design-taste/taste-color |
| 最多两套字体、字号档位、行长 45–75、字重 ≤ 3 | design-taste/taste-typography、frontend-design |
| 时长和缓动 token、位移 ≤ 20px、错开 60–120ms、只动 transform / opacity | design-taste/taste-motion |
| 企业信任风:一个深蓝强调色、表格是招牌组件、几乎不用动效、每个说法配出处 | design-taste/corporate-trust |
| 工业风:可见网格、一个信号色、圆角 ≤ 2px、机械式短动效 | design-taste/brutalist-industrial |
| 留白就是产品:Hero ≥ 18vh、区块 ≥ 140px、用细线不用框 | design-taste/quiet-luxury |
| 落地页 12 段结构、按钮写动词、AI 套话黑名单、B10 上线前必补项 | landing-page-design(网站skill/ 与 AI-Design-Skills/ 是同一来源) |
| 只在区块露出 30% 时播一次、离屏暂停、减少动态时直接显示终态 | AI-Design-Skills/design-to-motion |
| 首页、FAQ 和国内本地化(ICP、公安备案、不用 Google Fonts、表单失败保留输入) | AI-Design-Skills/学习笔记.md |
| LCP < 2.5s、CLS < 0.1、INP < 200ms、页面 ≤ 1.5MB | design-taste/taste-web-performance、lingheng-tech-site / ai-planner-site |
| 触控 44 / 48、可访问性优先级表、WCAG 2.2 条目 | ui-ux-pro-max quick-reference、design-taste/taste-accessibility |
| mobile-first、断点 640 / 768 / 1024 / 1280 / 1536 | web-design-skills/02-responsive-design(仅参考,无许可证) |
| 设计深度分级(Level 0–2)、Level 2 先给可看的产物再实现、verify-ui | design-guide |
| 复刻和改版的授权边界:默认私有、noindex,法务决定交给用户 | website-rebuild |
| 多模型画布对比设计稿(需要账号,只作参考) | superdesign |
| 深色石墨 + 单一橙色、12 列网格、0/2px 圆角、事实条、实拍主视觉、count-up 只用于真实计数、单观察器、no-JS / reduced-motion 回退、汉堡菜单 48px、微信弹窗、390×620 首屏、手机底部快捷栏、zh/en/ja 同名页、Playwright 验证、Cloudflare Pages 部署 | linghengmake-site(DESIGN.md / README / style.css / main.js / verify.py / responsive_checks.py / build_ja.py) |
瓷白 + 深墨 + 衬线标题、五档字号、?static 截图模式、【待补充】标记样式、部署脚本(端口检查、原子替换、nginx -t、回滚、只动本站) |
lingheng-tech-site |
口号排版(nowrap、 、逐宽检查)、氛围图遮罩不透明度下限、哨兵页头、浮动条显示条件、AGENTS.md 指定 skill |
ai-planner-site |
| 生图调用方式 | ~/.claude/skills/gpt-image-bridge |
| 冲突点 | A 说 | B 说 | 推荐 |
|---|---|---|---|
| 动效数量 | frontend-design:只要一个编排好的时刻;corporate-trust:几乎没有;impeccable / taste-skill:每个区块都淡入是 AI 味 | linghengmake-site:用户确认多处克制动效(单观察器显现 + 计数 + 悬停 + 首屏慢缩放);ai-planner / lingheng 也用了区块显现 | 默认:一个首屏时刻 + 克制的显现(≤ 20px、只播一次)。用户要求更多时可以加,但必须带齐 no-JS / reduced-motion 回退,并在 DESIGN.md 里写清 |
| 显现参数 | corporate-trust:6px / 200ms;brutalist:8px / 150ms;landing-page-design:模糊变清晰 ≥ 800ms,cubic-bezier(.32,.72,0,1) |
实践:16–20px / 600ms ease-out 或 cubic-bezier(.22,1,.36,1) |
企业站 12–20px、500–700ms、(.22,1,.36,1);不做大面积模糊(性能问题) |
| 字体 | impeccable:系统字体当 display 是失败,要自托管有性格的字体;landing-page-design:禁用 Inter / Arial / Helvetica,指定 Geist / Manrope | 三个站:只用系统字体,不下载(国内访问、零外部请求) | 国内站用系统 CJK 字体栈,靠字号、字重和留白建立个性。确实需要品牌字体时,自托管子集化的 woff2 并设 font-display: swap,绝不走 CDN |
| 眉标、mono 标签、01/02/03 编号 | hallmark / impeccable:禁眉标、禁字距拉开的大写标签、mono 不能当"技术感"道具;frontend-design:近黑底 + 单一亮橙 / 朱红、mono 小标签、细线零圆角都是 AI 默认方案 | corporate-trust 允许眉标;brutalist 要求 mono 编号;linghengmake-site 是深色 + 橙色 + mono 技术数据;ai-planner 用 mono 序号(aria-hidden) | brief wins:用户确认的方向照做。mono 只给真实的测量值、规格和代码;编号只给真实的序列(流程步骤);不给每个标题加眉标 |
| 区块留白 | quiet-luxury:≥ 140px、Hero ≥ 18vh | linghengmake-site:96 / 64px;lingheng / ai-planner:clamp(96px, 12vw, 160px) |
工业 / B2B 信息密集的站:96 / 64;编辑 / 奢华 / 个人品牌:clamp(96px, 12vw, 160px) |
| 圆角 | corporate-trust:6–8px;impeccable(codex 段):卡片 12–16px | brutalist ≤ 2px;quiet-luxury 按钮 ≤ 4px;三个站都是 0–2px | 按方向定一套。工业 / 编辑风 0–2px(弹窗 4px);SaaS 6–8px;不要所有元素一个大圆角 |
| Hero 标题 | landing-page-design B5:标题文字从左到右渐变 | taste-skill / impeccable:渐变文字 banned | 不用渐变文字,用实色 |
| 标题字号上限 | corporate-trust:≤ 2.8rem | linghengmake-site:桌面 64px;ai-planner:H1 ≤ 6.5rem;impeccable:display ≤ 6rem | 企业信任风用 2.8–4rem;有实拍或口号主视觉时可到 64–84px;手机 28–40px |
| 暗色 / 亮色 | corporate-trust:营销页不要深色 Hero | impeccable:按使用场景选;linghengmake-site 用户确认深色工业风 | 按场景和用户确认来选。深色要重新计算三层表面的对比度 |
| 首屏信任信号 | landing-page-design:首屏放客户 logo、数据或评价 | 原则 0 / hallmark:不编造 | 只用真实事实:设备数、成立年份、已确认参数、回复时效 |
| 主按钮数量 | landing-page-design:一屏只有一个主按钮 | corporate-trust:一个主按钮 + 一个次按钮;linghengmake-site:获取报价(主)+ 上传图纸(次) | 一个实心主按钮,加最多一个描边或文字形式的次按钮,首尾文案一致 |
| 页头滚动反馈 | linghengmake-site:超过 24px 加静态阴影 | lingheng-tech:不加阴影,只淡入细线 | 都可以;不改页头高度,不持续测量布局 |
| 图标 | landing-page-design:用 Phosphor / Solar 图标库 | brutalist:只用排版符号;三个站:几乎不用图标,用 CSS 或 SVG 画 | 零依赖站:少量自绘 SVG,统一线宽,emoji 不当图标 |