|
|
@@ -0,0 +1,45 @@
|
|
|
+---
|
|
|
+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 不兼容的转义选择器`。
|