UI 统一标准 · v3.1 已上线

智游大别山 · UI 治理报告

把「一整套规范」真正落地:补全组件 → 布局模板 → 代码规范与工具链 → 迁移策略与走查清单。核心原则:一致性 > 好看;组件化 > 复制粘贴;设计令牌 > 到处写死;文档和检查清单 > 口头约定。
v3.1 专项:首页板块卡按钮从「两个白药丸」改为「一条品牌绿玻璃操作条」,三层叠加根因一次修净,并回写为红线第 8–11 条。

打开线上组件标准库 v3

一、六步方法论落地进度 逐条对照,不跳步

要求本项目落地状态
1盘点现状四维量化实测 4221 个 HTML(色值 1079 种 / 字号 40+ 档 / 阴影 218 种…)完成
2建立设计令牌色板 13 档 + 语义色 4 + 字号 6 档 + 圆角 4 档 + 阴影 2 档 + 间距 8px 栅格 + 断点 4 档,全在 ui.css 第 0 节完成
3统一基础组件21 类组件,覆盖 Button / Input · Select · Checkbox · Radio · FormItem / Card · Modal · Drawer · Tabs · Table · Pagination / Toast · Tooltip · Dropdown · Breadcrumb / Empty · Loading · Skeleton完成
4布局模板页头 / 页脚 / 侧栏 / 内容区 + 容器封顶 1200px + 12 列栅格 + 页面标题·面包屑·操作区·分页区完成
5代码规范目录映射对照 + 命名规则 + 禁字清单 + Stylelint / ESLint / Prettier 真实工具链 + commitlint完成
6迁移策略冻结新增 → 令牌组件 → 布局模板 → 逐页替换 → 清旧 CSS → 视觉回归 → 走查清单逐页替换中

二、第 3 步 · 组件补全 每个组件都覆盖默认/悬停/点击/禁用/加载 + 错误/成功/警告 + 移动端

21
基础组件总数
v3 新增 5 类 + Alert / Skeleton 补位
192
线上 .ui-*
全站零冲突命名空间
17×9
状态覆盖矩阵
组件库第 12 节逐项打勾
6
声明式行为属性
data-ui-* 零配置生效

三、第 4 步 · 布局模板 统一页头、页脚、侧栏、内容区

要素标准
容器最大宽度1200px(阅读页 720px / 大屏 1440px 两档变体)
栅格12 列 CSS Grid;ui-col-* 基础 + --md-*(≥768)--lg-*(≥1024);<768px 一律收成整宽
页面结构ui-page(撑满视口)→ ui-page-hd(标题·面包屑·操作区同行)→ ui-page-bodyui-page-ft
侧栏ui-aside-navui-aside-link;<1024px 自动转横向可滑条
区块节奏ui-section + 品牌色竖条标题 ui-section-t;桌面端自动放大卡片与表单内距

四、第 5 步 · 代码规范与工具链 已装好、已跑通、已验证不是空转

五、第 6 步 · 迁移策略 不要一次性重写

标准步骤本项目落地状态
冻结新增,新页面必须用规范ui.css / ui.js 已全站注入,新页面自动继承完成
先做令牌和基础组件令牌 13 档 + 组件 21 类 + 声明式行为层完成
做布局模板ui.css 第 16 节(容器/骨架/页头页脚/侧栏/栅格)完成
按高频页面逐页替换首页 → 登录 → 列表 → 详情 → 表单进行中
清理旧 CSS / 无用依赖 / 内联样式并轨层已兜住视觉;源码级残留待清进行中
加视觉回归截图对比截图能力已具备(桌面 + 移动双套),缺固定基线进行中
建立设计走查清单组件库第 14 节 17 条走查项完成

六、发布验真 线上实测,不是自述

$ curl -sI https://ltdlt.cn/ui.css   → 200   57539 B
$ curl -sI https://ltdlt.cn/ui.js    → 200   12925 B
$ curl -sI https://ltdlt.cn/ui-kit.html → 200   组件标准库 v3

# 注入范围:对客页 2 条 / 后台页 0 条
  /                       ui.css=1  ui.js=1
  /bishu.html             ui.css=1  ui.js=1
  /zixun.html             ui.css=1  ui.js=1
  /detail/bishu_100.html  ui.css=1  ui.js=1
  /boss.html              ui.css=0  ui.js=0   ← 管理端保持原貌

# 质量指标
  .ui- 命名空间类数    192
  CSS 大括号平衡        462 / 462
  全站 border-radius:999px 残留   0 处(首页椭圆仅剩 2 个圆形悬浮钮)
  ui.js 行为层命中      data-ui-dd / tip / tabs / chip / table / confirm 全部存在
  site_ver             20260911093936

# 静态检查门禁
$ node _ui_standard/lint/run.mjs all
  === css ===
  === js ===
  [PASS] ui.css / ui.js 静态检查全绿

# 视觉验收(CDP 精确视口,不用 --window-size)
$ node _ui_cta_audit.js https://ltdlt.cn/ ".sec-cta-btn" 320,360,375,390,414,430,440
  320 PASS  360 PASS  375 PASS  390 PASS  414 PASS  430 PASS  440 PASS
  按钮高度统一 36px · 文字行数 1 · 文档宽=视口宽 · 横向溢出 0

七、本轮专题 · 首页板块卡 CTA 重构 把「椭圆丑」连根拔掉

七 · 一、改造前后 左:问题现场 | 右:改后定版

改造前:白色大药丸按钮,避暑路线折成两行
改造前 白色药丸 · 文字折行
改造后:一条圆角玻璃操作条,六张卡完全统一
改造后 一条玻璃操作条 · 单行
改造后单卡放大:品牌绿主按钮 + 透明次按钮 + 1px 分隔线
放大细节 主次分明 · 1px 分隔线 · 高 36px

七 · 二、验收 · 多宽度实测 320 → 440 七档全过

视口宽度按钮高文字行数文档宽横向溢出按钮宽结论
32036px1320063PASS
37536px1375079PASS
43036px1430094PASS
44036px1440097PASS
另测 360 / 390 / 414 三档同样单行、零溢出、高度一致。判定方式:用 Range.getClientRects().length 数文字真实行数(不靠肉眼、也不靠高度除行高),用 CDP Emulation.setDeviceMetricsOverride 精确指定视口 —— 浏览器 --window-size 实测会失真(指定 430 实际得到 518,截图只截 430,看起来像溢出)。

八、改造效果 线上实拍 · 品牌绿统一、留白节奏一致

组件标准库桌面端
组件标准库 v3 桌面端
组件标准库移动端
组件标准库 v3 移动端
首页移动端整页
首页整页 移动端 · 无回归
板块页移动端
板块页(避暑)移动端

九、下一波待办 第 6 步逐页替换 + 源码级清尾

1逐页替换:按 首页 → 登录 → 列表 → 详情 → 表单 的顺序,把存量页面替换到布局模板标准;同时把散在各页产物里的业务组件收进 ui.css
2视觉回归固定基线:截图链路已具备(桌面 + 移动双套),需要落一份历史基线做逐版比对。
3源码级遗留色清尾:1265 个 detail 页 + 首页 / 资讯页源码里仍留着靛蓝 #3949ab、青 #00897b、红 #d32f2f、奶油米黄 #fbf6ea(生成器各残留 1–2 行 + 首页黄金模板 1 行)。实测渲染已被并轨层覆盖为品牌绿、肉眼无异常,但源码该清干净——改生成器 + 模板后重建。
4prompt() 2803 处从生成器源头改造成 ui.confirm 与内联表单(返回值被同步代码使用,不能靠运行时接管)。
5图片补 alt 1622 张 + loading="lazy" + 压缩到 300KB 内;补 45 页 description、28 页 h1
6内联 style= 25112 处按页族抽公共 CSS;!important 4671 处逐文件降级(排除并轨层)。
7断点 16 个收敛到 sm / md / lg / xl 四档;部分页面补 Permissions-Policyapi/*.py 内联样式纳入盘点。
8圆角档位收敛:页面自建类散着 10 / 12 / 16 / 24 四档,都不在设计令牌内(令牌四档 = 10 / 14 / 20 / 999),逐页替换时一并对齐。
9清掉 .gb-entry-sub 浅绿字配橙金底的杂色;首页 / 资讯页残留的内联色一并收口。
10首页其余区块按同一套标准继续替换(板块卡 CTA 已定版),并把「黄金模板三副本」的漂移同步掉。