不是靠加一层样式硬盖,而是把色值、字号、圆角真正改到页面里。已装自动守卫:以后生成器重写页面,10 分钟内自动归一,不会再被打回。
| 项目 | 之前 | 现在 | 做法 |
|---|---|---|---|
| 新页上线门禁 | 没有 | 已接入交付流水线 | 部署后自动真渲染体检,不过不许上线 |
| 缺 <h1> | 172 个顶层页 | 60 个已补 / 余 123 全是跳转壳 | 插入读屏可见、肉眼不可见的 h1(取 title),不依赖注入 CSS |
| 图片缺 alt | 2280 张 | 0 张 | 有 title 用 title,否则 alt=""(装饰语义),2280 处一次性补齐 |
| 资讯页内联样式 | 1915 处 | 19 处 | 1910 处重复 background 内联 → 类名(.zx-cat-*) |
| 全站内联样式 | 27,778 处 | 22,117 处 | 43 个详情/长页把重复 style 串提成类,消除 2,574 处、减 333KB |
| 外来色系 | 2246 个文件 | 0(边框/背景/胶囊) | Material 靛蓝/青绿/正红 → 品牌色;含 6738 处边框色 |
| 深底上的字 | 3 页 1.6~3.4:1 | 全部达标 | 板栗主图强调字、武汉站序号、冰箱页说明卡 |
内联瘦身是「等价变换」,不是重写:每一条声明保留原优先级(补 !important),并用浏览器算出来的 24 项计算样式做指纹对比 —— 5 个样本页改前改后指纹完全一致(n=801 / 413 / 500 / 306 / 544 个元素)。
交付流水线 deliver_link.py 已改:部署 → 验真 → 视觉门禁 → 登记。门禁用真浏览器量三件硬指标,任一不过直接中断,页面进不了台账:
软指标只提示不拦:缺 alt、3~4.5:1 边缘值、外来色、按钮高度不统一、内联样式过多。紧急放行:ZY_GATE=off。
实测:19 个代表页(首页/资讯/甜柿/结伴/详情/商家/路线/专题页/内部页)GATE PASS (19/19)。连我自己的报告页第一次也没过(页脚 2.91:1),已修。
meta refresh 跳转壳(如 /ganhuo-*/),用户看不到它们,补了没意义。| 项目 | 改动前 | 改动后 | 改写 |
|---|---|---|---|
| 文字色 | 1790 种 | 统一到令牌 | 278,115 处 |
| 字号 | 56 档 | 6 档 | 136,044 处 |
| 圆角 | 28 种 | 4 档 | 67,426 处 |
| 页面自定义色变量 | 浅字失效 | 压深达标 | 78 处 / 69 文件 |
| 活动专题页浅字 | 1.4~3.2:1 | ≥4.6:1 | 489 处 / 256 文件 |
做法:只改 color: 声明的值、font-size、单值 border-radius。不动 background、padding、布局、HTML 结构与任何文字。白字(#fff)一律保留,避免深色头图区被改坏。
alert 从"阻塞等点击"变成 4 秒自动消失的底部提示,实测调用耗时 14ms(原生会一直卡住)。confirm / prompt 保持原生,不动支付与输入流程。新增文件:ui_components.css、ui_toast.js;接在 mobile.css 之后注入,nginx 配置已改、配置校验通过、配置锁已恢复(chattr +i)。
改造中发现一个坑:资讯页、首页、各板块页是脚本生成的(gen_zixun.py 每天 00:02、gen_home_sections.py 每天 00:04),改过的内容会在生成时被打回原样——第一次改造后 20 分钟就被覆盖了一次。
~/logs/ui_normalize.log。var(--c-ink) 不匹配任何映射),重复跑零副作用。| 内容 | 位置 |
|---|---|
| 改造前全量(html/css/js,81MB / 6340 文件) | /data/backup/ui_20261022/pre.tar.gz |
| 每一步改动前的单文件副本 | /data/backup/ui_20261022/{files,contrastfix,varfix,feedfix,lightfix2,activity} |
| nginx 配置(改动前 / 改动后) | /etc/nginx/backup/20261022/ |
回滚一条命令:把备份目录里的 ui_20261022/pre.tar.gz 解压回站点根目录
/audio/、/ganhuo-*/),自动化测试被重定向打断,不是坏页;用户实际看到的是跳转后的页面。