2026-08-24 · dev2 · 本规范全部令牌从现网代码统计得出,非设计稿臆造、非个人偏好。
统计口径:web/app/h5/全量 grep 频次排序 —— 用得最多的就是标准。
适用:H5 家长端 / 门店端(手机 + 平板)、后台管理页、所有效果图与原型图。
仓库根已有一份 DESIGN.md(2026-04-12 最后改动),它规定:
"Blue is the new Green:完全弃用绿色
#16a34a,改用临床蓝#3b82f6"
这份文档已与现网严重脱节,照它做会做出错的页面。物理证据:
DESIGN.md 主张 |
现网实测 | |
|---|---|---|
| 主色 | 蓝 #3b82f6 |
绿 #2fa37c |
| 命中文件数 | blue-600 1 个文件 |
绿主色 38 个文件 |
| 色值出现次数 | —— | #2fa37c 193 次(全站第一) |
⇒ 本规范取代 DESIGN.md。建议 root 将 DESIGN.md 标注「已作废 · 见本规范」,
否则后续仍会有人照它产出蓝色页面(Phase 74 家长端差点就是)。
| 用途 | 色值 | 现网出现 | 典型场景 |
|---|---|---|---|
| 主色 / 主按钮 | #2fa37c |
193 | 绿按钮、选中态、图标主色、曲线 OD |
| 主色深 / 强调文字 | #157c67 |
高频 | 数值强调、tab 选中文字、成功标签文字 |
| 主色暗 / 渐变末端 | #1f3a32 |
— | 药丸选中渐变起点 linear-gradient(100deg,#1f3a32,#2fa37c) |
| 主色浅底 | #eaf7f0 |
54 | 只读回填框底、成功提示条底 |
| 主色更浅底 | #f3faf6 |
75 | 按钮 hover/active 底、次级容器底 |
| 主色边框 | #9bdcc8 |
— | 只读回填框边、上传按钮虚线边 |
| 用途 | 色值 | 现网出现 |
|---|---|---|
| 标题文字 | #1f3a30 |
117 |
| 正文/深文字 | #1f2a24 |
52 |
| 次级文字 | #4a6a5b |
54 |
| 弱文字 / 副标题 | #7a9285 |
121 |
| 更弱 / 说明文字 | #5a7a6e · #94a3b8 |
21 · 27 |
| 占位符 | #9fb3a8 |
— |
| 禁用/箭头 | #a8bfb3 |
38 |
| 卡片边框(全站统一) | #e3eee7 |
159 |
| 卡片底 | #ffffff |
31 |
| 页面底 | #f6fbf8 · #fbfdfa |
— · 20 |
| 状态 | 文字 | 底色 | 用法 |
|---|---|---|---|
| 成功 / AI 识别 | #157c67 |
#e7f5ee |
绿标签药丸 |
| 警告 / 手动录入 | #9a4a00 |
#fff3dc |
橙标签药丸 |
| 必填星号 | #d1493f |
— | <i>*</i> |
| 错误提示 | rose-600 |
rose-50 |
表单报错、危险按钮边 |
现网确有蓝系(#2563eb 37 次 / #173a54 26 / #43617a 28 / #8aa0b3 36),
物理定位后发现它集中在两个专业模块:
app/h5/tablet/pane/panes/refractive-record/* ← Phase 63 屈光检查记录(平板专业录入 · **10 文件**)
app/h5/eye-nav/components/* ← 护眼领航(2 文件)
另有第三处(自检 2026-08-24 补录,不是模块主色):
app/h5/chat/components/four-l-detail-sheet.tsx ← 报告秒读详情 · 语音播放图标 text-[#2563eb]
这属功能性图标色(播放/朗读),1 个文件 2 处,不构成模块配色。
规则:
- ✅ 屈光记录(10 文件)与护眼领航(2 文件)沿用蓝系 —— 专业/临床语境,既定风格,不要去改
- ✅ 语音播放类功能图标可用 #2563eb(既有先例)
- ❌ 其余一切页面禁止引入蓝色作主色 —— 尤其家长端、门店首页、设置页、名片
- ⚠️ 图表里的"左眼 OS"用蓝 #6d8fd0 属数据区分色,不算主色,允许
复核命令(得 13 个文件:refractive-record 10 + eye-nav 2 + four-l-detail-sheet 1):
grep -rl "2563eb\|173a54\|43617a\|8aa0b3" web/app/h5/
| Token | 现网出现 | 用途 |
|---|---|---|
rounded-full |
204 | 药丸、标签、头像、主按钮、返回圆钮 |
rounded-xl(12px) |
163 | 输入框、记录卡、次级容器 |
rounded-2xl(16px) |
91 | 主卡片、分组 section |
rounded-lg(8px) |
54 | 小控件 |
rounded-[10px] |
19 | 提示条 |
默认规则:卡片 16 → 输入/记录卡 12 → 提示条 10 → 药丸/按钮全圆角。
❌ 不要出现 rounded-3xl 以上(现网仅 6 次,属特例)。
| 字号 | 现网出现 | 用途 |
|---|---|---|
11px |
154 | 表格列头、极小说明、标签 |
13px |
139 | 输入框文字、正文 |
12px |
106 | 字段 label、次要说明 |
12.5px |
98 | 副标题、tab、药丸、按钮文字 |
10px |
76 | 缩略图说明 |
14px |
74 | 记录卡数值、小标题 |
11.5px |
56 | 统计格标签、提示条 |
15px |
52 | 区块大标题、提交按钮 |
13.5px |
21 | 分组标题 |
16.5–18px |
少 | 页面主标题(手机端常隐藏) |
字重:
- 800(extrabold)= 数值、分组标题、强调
- 700(bold)= 按钮、label、tab、标签
- 600(semibold)= 次级说明
- 500/400 = 正文、占位
| 项 | 标准 | 现网出现 |
|---|---|---|
| 元素间距 | gap-2(8px)主力 · gap-1.5 图标文字 · gap-3 分组 |
165 / 79 / 55 |
| 卡片内边距 | p-3.5(14px) |
— |
| 横向内边距 | px-4(页面)· px-3(控件) |
95 / 91 |
| 纵向内边距 | py-3 / py-2.5 / py-2 |
72 / 64 / 65 |
| 输入框最小高 | 42px | 6 |
| 药丸/小按钮高 | 33px | — |
| 提交主按钮高 | 44–46px | — |
| 卡片间距 | mt-2.5(10px) |
— |
w-full h-[33px] rounded-full bg-[#2fa37c] text-white text-[12.5px] font-bold
active:opacity-90 transition
提交类加大:h-[46px] rounded-[14px] text-[15px] font-bold
rounded-full border border-[#e3eee7] bg-white px-3 h-[33px]
text-[12.5px] font-semibold text-[#4a6a5b] active:bg-[#f3faf6] transition
bg-white border border-[#e3eee7] rounded-2xl p-3.5 mt-2.5
/* 可输入 */
w-full bg-white border border-[#dbece3] rounded-xl px-3 py-2.5
text-[13px] font-medium text-[#1f2a24] placeholder:text-[#9fb3a8] min-h-[42px] outline-none
/* 只读派生值(系统自动算/识别回填)—— 必须绿底,让用户一眼看出"这不是我填的" */
w-full bg-[#eaf7f0] border border-[#9bdcc8] rounded-xl px-3 py-2.5
text-[13px] font-bold text-[#157c67] min-h-[42px]
/* 未选 */ rounded-full px-3 py-1.5 text-[12px] leading-[18px]
border border-[#e3eee7] bg-white text-[#4a6a5b] font-semibold
/* 选中 */ border-[#2fa37c] text-white font-bold
style={{background:"linear-gradient(100deg,#1f3a32,#2fa37c)"}}
/* 容器 */ flex bg-[#eef4f1] rounded-xl p-[3px]
/* 项 */ flex-1 text-center rounded-[9px] py-[7px] text-[12.5px] font-bold text-[#5a7a6e]
/* 选中 */ bg-white text-[#157c67] shadow-[0_1px_3px_rgba(15,82,69,.10)]
/* 成功/AI */ rounded-full px-2 py-0.5 text-[10.5px] font-bold text-[#157c67] bg-[#e7f5ee]
/* 警告/手动 */ 同上,色改 text-[#9a4a00] bg-[#fff3dc]
sticky top-0 z-10 bg-white border-b border-[#e3eee7]
返回钮:w-9 h-9 rounded-full bg-[#f3faf6] + ChevronLeft w-5 h-5 text-[#1f3a30]
标题: text-[17px] font-bold text-[#0f172a]
radial-gradient(circle at 0% 0%,#d6f0e3 0%,rgba(0,0,0,0) 45%),
radial-gradient(circle at 100% 15%,#e0ecff 0%,rgba(0,0,0,0) 50%),
radial-gradient(circle at 50% 100%,#fff3d9 0%,rgba(0,0,0,0) 45%),#fbfdfa
配 backgroundAttachment: "fixed",长页滚动时不跟着跑。
lucide-react@^0.344.0(与出图用的 lucide-static@0.344.0 必须同版)eye/file-text 路径不同,版本错=画成另一个图标w-3.5 h-3.5 · 列表项 w-[14px] · 顶栏 w-5 h-5 · 缩略图 w-5 h-5class="lucide lucide-xxx" 拿准确名字| 场景 | 用哪个 |
|---|---|
| 数据大屏(中国地图 / 甘特) | echarts(必须 echarts/core + 按需 use()) |
| 其余一切图表 | recharts@^3.8.0 |
import echarts#2fa37c / 左眼 OS #6d8fd0(已成既定,不要改)strokeWidth=2 · 点 r=3.5 白心描边 · 网格 #eef4f1 仅横线 ·10px #94a3b8 · 线下区域渐变 主色 0.20 → 0rx=8 圆角矩形 + 白字 800(OD 底 #0f5d47 / OS 底 #5f79b5)| 端 | 设计宽 | 说明 |
|---|---|---|
| 手机 | 360 | 主力;效果图帧 390 × zoom .923 |
| 平板 | 830 | 长官 Mac 微信窗口实测宽度 |
| 平板宽屏 | 1024 | 网格才出 3 列 |
🔴 响应式铁律:
- 网格 ≤900 一行 2 个,1024 才 3 个 —— 视口定错整张图全错
- 手机端四格统计区是 2 列不是 4 列(4 列必横向溢出)
- 手机端页面大标题隐藏(顶栏已有,不重复);副标题 12px/行高 18
- 平板二级页:左菜单固定 240;抽屉在右侧内容区内,展开落 x=240(不盖菜单)
getComputedStyle,fontSize/fontWeight/color,打印一致率 —— 不到 100% 不算完documentElement.scrollWidth > window.innerWidth 比宽高;🔴🟢ⓘ 抓得到,全角抓不到 →| ❌ 禁止 | 原因 |
|---|---|
照 DESIGN.md 用蓝色主色 |
该文档已作废(见 §〇) |
| 在非屈光记录/护眼领航模块引入蓝系主色 | 与全站绿系割裂 |
| 自造色值 / 目测调间距 | 必须扒现网或量 getComputedStyle |
| 使用 Ant Design | 技术栈硬约束(shadcn/ui + Tailwind) |
非大屏目录 import echarts |
图表库政策 |
| 用 emoji 当图标 | 出图渲染成空方框 |
| 自己画 SVG 灰块替代图标 | 用 lucide 真图标 |
| 手机端用 4 列统计格 | 必横向溢出 |
| 只看接口状态码就说"页面做完了" | 须渲染 + 量化对比 + 眼检 |
# 色值频次(权威排序)
grep -rhoE "#[0-9a-fA-F]{6}" web/app/h5/ | tr 'A-F' 'a-f' | sort | uniq -c | sort -rn | head -20
# 圆角 / 字号 / 间距频次
grep -rhoE "rounded-\[?[0-9a-z]+\]?" web/app/h5/ | sort | uniq -c | sort -rn
grep -rhoE "text-\[[0-9.]+px\]" web/app/h5/ | sort | uniq -c | sort -rn
grep -rhoE "gap-[0-9.]+|px-[0-9.]+|py-[0-9.]+" web/app/h5/ | sort | uniq -c | sort -rn
# 蓝系边界(证明它只在两个模块)
grep -rl "2563eb\|173a54\|43617a" web/app/h5/
# 图标与图表库版本
grep -E '"lucide-react"|"recharts"|"echarts"' web/package.json
云机环境 · 本规范所有数字均为上述命令的真实输出,未经修饰。