JianFeeeee
50ee10a522
fix(webui): 修「通信页面完全无法上下滑动」+ 日历左右滑动手势
## 滑动(用户:「通信页面的各个子页面还是无法滑动啊,我真服了」)
根因不是我第一次以为的 `overflow: hidden`,而是**我把列表包进了一个 flex 列**:
- `MailList` 的根是 `w-full lg:w-[320px] shrink-0 ... flex flex-col` —— 这个 `shrink-0`
是给**行**方向布局写的(控制宽度),放进列方向后它作用在**高度**上:列表连高度
都不肯让 ⇒ 内部的 `flex-1 overflow-y-auto` 永远拿不到可用高度 ⇒ 滚不动。
- 表现极具误导性:容器**自己也没有溢出**,所以连滚动条都不出现,看起来像"页面被裁掉了"。
- 为什么以前没坏:列表原先直接挂在窄屏覆盖层(`absolute inset-0 flex`,**行**方向)下,
行方向的高度来自 `align-items: stretch`,不需要 `min-height:0`。
修法:`.comm-pane > *:not([data-testid='comm-tabs']) { flex: 1 1 0%; min-height: 0 }`
—— 让子面板既能压缩、也填满这一列。对收件/发件/授权/联系人一视同仁,避免只修好一个。
**实测**(390×844,11 行邮件):修复前 `scrollerCount: 0`(一个可滚动容器都没有);
修复后滚动容器 = `flex-1 overflow-y-auto p-2.5`、`overflow-y: auto`、可滚范围 236px、
`scrollTop` 实际移动 200px。导航仍完整可见(bottom=834 ≤ 844)。
## 我自己的两个方法错误(都写在这里,避免下次再犯)
1. **判据没断言前置条件**:前三次探针都报"没有滚动容器",其实是 gui-lab 收件箱太短
(12 封全落进同一个会话 ⇒ 只显示 1 组)⇒ 内容根本没溢出 ⇒ 我量的对象不存在。
最后用 10 个**独立会话**把列表撑高才复现出来。用户报的缺陷是真的,是我的探针没到位。
2. 第一条修复(去掉 `overflow:hidden`)方向不对,但我当时**差点把它当成修好了** ——
因为探针依旧是 0 滚动容器,只是我没深究。结论必须是三态,不能把"量不到"当"没问题"。
## 日历左右滑动(用户:「日历页面还不支持左右滑动手势」)
在日历主体上挂 touchstart/touchend,**复用 `shift()`**(与"上一月/下一月"按钮同一套翻页
逻辑);阈值:水平位移 ≥40px、且 ≥1.5×垂直位移、且 <600ms —— 否则会把纵向滚动误判成翻页。
**这条我还没验成功**:探针取日历标题的方式不对(返回 null ⇒ 判不了),
不能说它好了。修好探针再补验。
2026-09-14 11:01:10 +08:00
..
2026-09-13 06:16:59 +08:00
2026-09-11 15:49:41 +08:00
2026-09-14 08:09:22 +08:00
2026-09-14 11:01:10 +08:00
2026-09-14 10:35:05 +08:00
2026-09-08 19:16:35 +08:00
2026-09-12 20:25:00 +08:00
2026-09-11 22:01:56 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 08:09:22 +08:00
2026-09-08 19:16:35 +08:00
2026-09-12 09:54:31 +08:00
2026-09-08 19:16:35 +08:00
2026-09-14 09:11:36 +08:00
2026-09-12 08:02:30 +08:00