--- comet_change: fix-wxss-escape-selectors role: technical-design canonical_spec: openspec --- # WXSS 转义选择器修复设计文档 ## 设计目标 消除 `refine-weapp-ui-style` 上线后发现的微信小程序 WXSS 编译错误:Tailwind 的透明度/分数类(如 `bg-white/20`、`text-white/80`)会生成 `.bg-white\\/20` 等带 `\\/` 转义的选择器,微信小程序 WXSS 解析器无法识别。 ## 关键设计决策 ### 1. 用内联样式替代不兼容的 Tailwind 类 - `bg-white/20` → `style="background-color: rgba(255, 255, 255, 0.2);"` - `text-white/80` → `text-white` + `style="opacity: 0.8;"` - 保持视觉表现不变,同时避免 Tailwind 编译出转义选择器。 ### 2. 增强 WXSS 检查脚本 - 更新 `scripts/check-wxss-escapes.js` 的正则,从仅检测 `\\:` / `\\.` 扩展到同时检测 `\\/`,确保 fractional/opacity 类也能被拦截。 - 检测失败时输出明确的类名示例并退出非零,阻止问题进入产物。 ### 3. 不涉及架构改动 - 仅替换类名和增强脚本,不引入新的样式系统、不修改业务逻辑、不调整组件接口。 ## 受影响文件 - `src/components/home/SalesHome.vue` - `src/components/home/DispatchHome.vue` - `src/components/home/ConstructionHome.vue` - `src/components/my/ProfileView.vue` - `scripts/check-wxss-escapes.js` ## 风险与缓解 | 风险 | 缓解 | |---|---| | 后续再次引入 `bg-*/*` 或 `text-*/*` | 检查脚本已覆盖 `\\/`,构建会失败 | | 内联样式与 Tailwind 类混用导致维护困难 | 本次范围极小,仅用于必须规避 WXSS 的场景 | ## 测试策略 - `npm run type-check` 无 TS 错误。 - `npm run build:mp-weixin` 成功,且 `[check-wxss] app.wxss 未发现 WXSS 不兼容的转义选择器`。