Files
danyang-match/miniapp/assets/tabbar/DESIGN.md
T
WorkBuddy 45e84722e1 fix(miniapp): 修复底部 tabBar 图标全部消失(开发者工具误删 app.json 专属图标)
根因:微信开发者工具(>=1.05.2112301)的 ignoreDevUnusedFiles 会按 WXML/JS 依赖分析过滤
"无依赖"文件。tabBar 图标仅在 app.json 中声明,不属于任何页面 WXML/JS 依赖,被误判为无用
文件从开发包剥离,导致 5 个图标全部加载失败(渲染为破图占位)。

修复:
- 在 project.config.json 与 miniapp/project.config.json 的 setting 中显式关闭
  ignoreDevUnusedFiles / ignoreUploadUnusedFiles(false),阻止图标被过滤。
- 同步关闭本地 gitignore 的 project.private.config.json(DevTools 运行时实际读取项)。
- 预览通道 scripts/preview-miniapp.mjs:补全 /assets 绝对路径→相对路径重写,并手动复刻
  原生 tabBar(原生 tabBar 不在任何页面 WXML 中,静态预览需自行复刻)。
- 回归守卫 ui-tests/tabbar-icons.mjs 扩充为 5 段,覆盖根因(配置开关)+ 预览复刻。
- miniapp/assets/tabbar/DESIGN.md 增加根因警示,防止后续被误开开关。

验证:UI 契约 23/23 全绿(tabbar-icons.mjs 位于 [19/23]);CDP 渲染实测 127 张图 0 破图,
5 个 tabBar 图标 naturalW=81 全部加载,选中色 rgb(233,107,107)、未选 rgb(153,153,153),
与 app.json selectedColor/color 一致。
2026-09-23 15:57:04 +08:00

128 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 丹阳公益婚恋平台 - 底部导航栏图标设计规范
## 概述
为小程序 5 个底部导航 Tab 设计的圆润线性风格图标,包含未选中(灰色)和选中(玫瑰红)两种状态,适配三种屏幕密度(1x/2x/3x)。
> ⚠️ **改动本目录前必读 —— 图标整排变「破图」的头号原因**
>
> 微信开发者工具自 `1.05.2112301` 起默认开启**「过滤无依赖文件」**(`ignoreDevUnusedFiles`)。
> 它的依赖分析只看 **WXML/JS**,而 **tabBar 图标只在 `app.json` 里被引用**,
> 于是被判定为「无依赖文件」并从**开发包中剔除** → 模拟器/真机上 5 个图标**全部加载失败**,
> 表现为底部导航整排破图(而 WXML 引用的图片一切正常,极易误判为图片损坏)。
>
> 本目录的 `assets/tabbar/*.png` 是**全仓库唯一「只被 app.json 引用」的图片资源**,因此是唯一受害者。
>
> 处置:`project.config.json`(仓库根 + `miniapp/`)与本地 `project.private.config.json`
> 中 `setting.ignoreDevUnusedFiles` / `setting.ignoreUploadUnusedFiles` **必须为 `false`**。
> 已由守卫 `ui-tests/tabbar-icons.mjs` 强制校验,请勿改回 `true`。
## 设计规范
| 属性 | 规范值 |
|------|--------|
| 图标尺寸 | 81 × 81 px (基础) |
| 安全区域 | 53 × 53 px(最小边距 14px) |
| 线宽 | 4px(缩放到导航栏后约 1.3px) |
| 圆角 | 端点圆角 + 转折圆角 |
| 填充 | 默认态线性;选中态填充核心爱心 |
## 颜色规范
| 状态 | 颜色值 | 用途 |
|------|--------|------|
| 未选中 | `#999999` | 默认状态图标 |
| 选中 | `#E96B6B` | 激活状态图标 |
| 背景 | `#FFFFFF` | 透明背景(PNG 支持 alpha) |
## 图标清单
### 1. 首页 (home)
- **意象**: 爱心小屋
- **元素**: 圆角屋顶 + 房屋主体 + 门内爱心
- **文件**: `home.png` / `home-active.png`
### 2. 找对象 (discover)
- **意象**: 双人缘分
- **元素**: 两个人物轮廓 + 中央爱心
- **文件**: `discover.png` / `discover-active.png`
### 3. 消息 (message)
- **意象**: 真诚沟通
- **元素**: 圆角气泡 + 爱心
- **文件**: `message.png` / `message-active.png`
### 4. 活动 (activity)
- **意象**: 公益相遇
- **元素**: 日历主体 + 挂环 + 爱心
- **文件**: `activity.png` / `activity-active.png`
### 5. 我的 (mine)
- **意象**: 个人守护
- **元素**: 单人轮廓 + 胸前爱心
- **文件**: `mine.png` / `mine-active.png`
## 导出尺寸
| 尺寸 | 像素 | 适用场景 |
|------|------|---------|
| 1x | 81 × 81 | 标准屏设备 |
| 2x | 162 × 162 | Retina 屏设备 |
| 3x | 243 × 243 | 超高清晰屏设备 |
文件名约定:`{icon-name}.png` / `{icon-name}-active.png` / `{icon-name}_2x.png` / `{icon-name}_3x.png`
## SVG 源文件
所有图标均提供可编辑的 SVG 版本,位于 `svg/` 目录:
- 可直接在 Figma 中导入编辑
- 可调整颜色、粗细、圆角等参数
- 颜色替换:将 `stroke="#999999"` 改为 `stroke="#E96B6B"` 即可切换激活状态
## 文件位置
```
miniapp/assets/tabbar/
├── svg/ # SVG 源文件(可编辑)
│ ├── home.svg / home-active.svg
│ ├── discover.svg / discover-active.svg
│ ├── message.svg / message-active.svg
│ ├── activity.svg / activity-active.svg
│ └── mine.svg / mine-active.svg
├── home.png / home-active.png
├── home_2x.png / home-active_2x.png
├── home_3x.png / home-active_3x.png
├── discover.png / discover-active.png
├── discover_2x.png / discover-active_2x.png
├── discover_3x.png / discover-active_3x.png
├── message.png / message-active.png
├── message_2x.png / message-active_2x.png
├── message_3x.png / message-active_3x.png
├── activity.png / activity-active.png
├── activity_2x.png / activity-active_2x.png
├── activity_3x.png / activity-active_3x.png
├── mine.png / mine-active.png
├── mine_2x.png / mine-active_2x.png
└── mine_3x.png / mine-active_3x.png
```
## 更新说明
小程序 TabBar 配置无需修改,文件名与原有配置保持一致。
原配置 (`app.json`):
```json
{
"tabBar": {
"list": [
{ "pagePath": "pages/index/index", "iconPath": "assets/tabbar/home.png", "selectedIconPath": "assets/tabbar/home-active.png" },
{ "pagePath": "pages/discover/discover", "iconPath": "assets/tabbar/discover.png", "selectedIconPath": "assets/tabbar/discover-active.png" },
{ "pagePath": "pages/messages/messages", "iconPath": "assets/tabbar/message.png", "selectedIconPath": "assets/tabbar/message-active.png" },
{ "pagePath": "pages/activity/activity", "iconPath": "assets/tabbar/activity.png", "selectedIconPath": "assets/tabbar/activity-active.png" },
{ "pagePath": "pages/mine/mine", "iconPath": "assets/tabbar/mine.png", "selectedIconPath": "assets/tabbar/mine-active.png" }
]
}
}
```