fix: 「我的」页无法滚动 —— 缺滚动容器;顺带修矮屏登录页
用户反馈「我的页面点击进入后无法滑动」。 ## 根因:AccountPage 根本没有滚动容器 窄屏外壳是 `h-full flex flex-col overflow-hidden`,页面本身是 `flex-1 min-w-0 flex flex-col`,中间缺一层 `overflow-y-auto` —— 内容超出的部分**直接被裁**,滚不到也点不到。 实测 390px 下内容(资料 + 权限 + 改密码 + 密钥 + 退出)需 860px、容器只有 795px,「退出登录」按钮连同下面 65px 一起消失;1280x800 的桌面上同样看不到。 其余六个页面级组件(AdminUsersPage / MailView / ComposePage / ThreadView / ContactPanel / MailList)都有这一层,只有它漏了 —— 上一轮把退出登录搬进这页 之后内容变高,问题才显形。 ## 顺带:登录页与初始化页在矮屏滚不到底 卡片高约 371px,而 `h-full flex items-center` 在内容超高时让它上下**同时**溢出, 溢出到顶部那段是滚不到的(`scrollTop` 最小是 0)—— 实测 568x280(横屏手机, 或软键盘弹出后的可视高度)下「登录」按钮完全在视口外,光加 `overflow-y-auto` 也够不着。 改用卡片自己的 `my-auto` 而不是容器的 `items-center`:auto margin 在空间不足时 自动退化为 0,矮屏变成正常的顶对齐可滚布局,高屏仍然垂直居中 (390x844 与 1280x800 实测 centered=true,568x280 下滚到底能看到按钮)。 ## 两侧都加了检查 - 结构断言:七个页面级组件都必须含 `overflow-y-auto`; 登录/初始化页必须有 `my-auto` 且不用 `h-full ... items-center` - 实测脚本新增 `scrollHealth()`:每页都有滚动容器,且没有内容被 `overflow-hidden` 的父级裁掉 判据刻意是「**有**滚动容器」而不是「当前正在滚动」—— 内容暂时不够高时后者 为假,但页面是健康的;真正的 bug 是根本没有那一层。 ## 验证 窄屏实测 18 项 + 宽屏回归 5 项全通过;结构断言从 28 条扩到 37 条。 生产已部署。
This commit is contained in:
@ -157,13 +157,29 @@ ComposePage / ThreadView / KeyPanel / QuotaPanel / Attachments / BackButton。
|
||||
只有「关闭」。两者语义不同:返回退出整个详情栏回到列表,关闭只收起树、
|
||||
留在这封邮件上。补了 `BackButton`。
|
||||
|
||||
**「我的」页根本没有滚动容器(用户反馈)**
|
||||
窄屏外壳是 `h-full flex flex-col overflow-hidden`、页面是 `flex-1 flex flex-col`,
|
||||
中间缺一层 `overflow-y-auto` —— 内容超出的部分**直接被裁**,滚不到也点不到。
|
||||
实测 390px 下内容需 860px、容器 795px,「退出登录」连同下面 65px 一起消失;
|
||||
1280x800 的桌面上同样看不到。其余六个页面级组件都有这一层,只有它漏了。
|
||||
|
||||
**登录页 / 初始化页在矮屏滚不到底**
|
||||
卡片高约 371px,而 `h-full flex items-center` 在内容超高时让它上下**同时**溢出,
|
||||
溢出到顶部那段滚不到(`scrollTop` 最小是 0)—— 实测 568x280(横屏手机、
|
||||
或软键盘弹出后的可视高度)下「登录」按钮完全在视口外,光加 `overflow-y-auto`
|
||||
也够不着。改用卡片自己的 `my-auto`:auto margin 在空间不足时退化为 0,
|
||||
矮屏变成顶对齐可滚布局,高屏仍然垂直居中。
|
||||
|
||||
#### 验证
|
||||
|
||||
playwright 端到端 13 项全通过(含「底部导航六项都命中自己」、
|
||||
「工具按钮命中区 >= 44px」、四个页面无横向溢出、320px 无横向溢出);
|
||||
宽屏回归 5 项全通过(三栏并排、常驻侧栏仍有退出登录、无返回按钮、
|
||||
`.tap` 伪元素在宽屏不生效、无溢出)。
|
||||
`web/test/narrow-layout.test.mjs` 从 20 条扩到 28 条,把上述每一条都钉住。
|
||||
playwright 端到端 18 项全通过(含「底部导航六项都命中自己」、
|
||||
「工具按钮命中区 >= 44px」、五个页面各有纵向滚动容器、无横向溢出、
|
||||
320px 无横向溢出);宽屏回归 5 项全通过(三栏并排、常驻侧栏仍有退出登录、
|
||||
无返回按钮、`.tap` 伪元素在宽屏不生效、无溢出)。
|
||||
`web/test/narrow-layout.test.mjs` 从 20 条扩到 37 条,把上述每一条都钉住。
|
||||
|
||||
滚动检查的判据是「**有**滚动容器」而不是「当前正在滚动」:
|
||||
内容暂时不够高时后者为假,但页面是健康的 —— 真正的 bug 是根本没有那一层。
|
||||
|
||||
### P2 — 深色主题
|
||||
**现状**:只有浅色主题,深夜使用刺眼。
|
||||
|
||||
Reference in New Issue
Block a user