Skip to content

fix(ui): 修复子菜单进入动画与滚动重测跳位 - #23

Merged
chen-ran merged 3 commits into
mainfrom
codex/submenu-motion-after-placement
Sep 13, 2026
Merged

chen-ran merged 3 commits into
mainfrom
codex/submenu-motion-after-placement

Conversation

@qqqqqf-q

@qqqqqf-q qqqqqf-q commented Sep 13, 2026

Copy link
Copy Markdown
Member

滚动中的子菜单遇到内容变更或尺寸重测时,对齐计算使用第一行的屏幕坐标,把内部滚动距离误算成菜单偏移。现在扣除祖先滚动容器的 scrollTop,保持内容原点对齐,同时保留真正的布局变化和边界避让。Cloud 回归测试覆盖正常比例与 0.95 动画缩放:旧实现两项失败(预期 -3px,实际 713px),修正后通过。浏览器滚动 700px 并触发 DOM 重测,菜单 top 始终为 166.5px。

长 Connector 列表展开时,首次挂载和定位占用了进入动画的时间,首个可见画面可能直接接近终态。子菜单现在等定位后的两个 animation frame 再启动原有 100ms 淡入缩放;准备期间保持透明,不阻断键盘焦点。关闭继续使用原有退出动画,卸载时取消待执行的 frame。

验证:在 Cloud 真实 Connector 列表(112 项)中,配合条目子组件隔离定位更新,三次展开采样均看到连续中间帧;Escape 退出透明度连续下降,键盘右箭头聚焦首项。改动文件 ESLint 通过。尚未覆盖所有 DropdownMenu 子菜单调用方。

关联:https://github.com/felinics/Memoh-Cloud/pull/339

真人 QA(原提交 ffbd5b0):用户已确认当时的 Connector 流程“还不错,能用”;其他共享子菜单调用方未逐项验收。

同步更新:已将 UI main2aa8fc7c96b5ed80874d4bf2a9fbd163cd9bcbd4 合入本分支,生成 3ad432bd4917ef8f1d6159f1a1777f5f7f349685。包含 main 的 NumberField 单位后缀和嵌套滚动区域悬停校正,原有两条菜单修复代码保持不变;本 PR 相对当前 main 的差异仍仅为菜单动画与滚动对齐修复。

同步后验证:在 Cloud 集成检出中,218 个 Web/Desktop 测试文件、1971 个用例全部通过(含正常比例及 0.95 缩放下的子菜单滚动对齐回归);Desktop 类型检查、Web 构建通过,四个相关 UI 文件 ESLint 与 git diff --check 通过。Cloud Web 类型诊断仍为原来的 445 条,无新增。未重新验收所有真实子菜单调用方,也没有把本次自动测试计为真人 QA。

下游依赖:https://github.com/felinics/Memoh-Cloud/pull/342 ,该 draft 同步引用此合并提交。两个 PR 均保留 draft 状态;本次合并 main 后尚未取得新的真人 QA 确认。

⚠️ No human QA — this PR has not been verified by a human yet. Remove this line once a human confirms the happy path.

@qqqqqf-q qqqqqf-q changed the title fix(ui): 修复长子菜单进入动画被挂载过程消耗 fix(ui): 修复子菜单进入动画与滚动重测跳位 Sep 13, 2026
@chen-ran
chen-ran marked this pull request as ready for review September 13, 2026 21:15
@chen-ran
chen-ran requested a review from a team as a code owner September 13, 2026 21:15
@chen-ran
chen-ran merged commit a2a8608 into main Sep 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants