2.8 KiB
2.8 KiB
左侧菜单收起与悬浮展开
目标
在不改变现有会话业务逻辑的前提下,为桌面端左侧菜单增加固定收起/展开按钮;收起后保留窄触发条,鼠标移入临时悬浮展开,移出恢复收起,并兼容所有现有主题。
阶段
- COMPLETE — 建立基线并定位侧栏、标题栏与主题入口
- COMPLETE — 实现固定收起状态与顶部标题旁按钮
- COMPLETE — 实现窄触发条和移入悬浮展开、移出收回
- COMPLETE — 补齐现有主题及桌面/窄屏样式兼容
- COMPLETE — 增加侧栏交互、无障碍与主题契约回归测试
- COMPLETE — 执行语法、专项回归和全量相关测试
- COMPLETE — 使用真实浏览器验收多主题与关键交互状态
关键决策
- 固定状态和悬浮预览状态分离,悬浮不修改用户固定选择。
- 功能层使用共享 DOM/JS/CSS,主题层只覆盖语义变量或受主题 ID 限定的视觉声明。
- 移动端沿用现有响应式侧栏逻辑,避免桌面悬浮规则破坏触屏操作。
- 顶部按钮提供可访问名称、
aria-expanded、键盘原生激活与可见焦点;悬浮触发条不进入 Tab 顺序,避免 hover-only 交互阻断键盘用户。
错误记录
- 第一次把共享侧栏交互层移动到 CSS 文件末尾时,补丁上下文误用了相邻的暗金主题选择器,未命中且未产生文件改动;随后按精确边界重新移动。
- 首轮旧主题专项回归因
gilded/wasteland契约仍断言旧 cache-bust URL 而失败;同步更新为本次版本后重跑。 - 第二轮
wasteland回归识别到新增共享暗色:is(...)未列出gilded,违反既有“共享暗色选择器包含全部暗色主题”契约;已纳入后再由专属变量覆盖暖色阴影。 - 首轮 Firefox headless 验收会话默认报告无精细指针,桌面按钮按媒体查询隐藏并导致 WebDriver 点击失败;改为在桌面验收会话显式模拟
fine + hover指针能力。 - 第二轮 Firefox 已完成主要状态测量,但 WebDriver 点击移动遮罩时选择了被侧栏覆盖的元素中心点并被拦截;改用侧栏外
x=350的真实指针点击验证关闭。 - 独立终审发现 JS 的移动输入判断与桌面收起 CSS 能力条件不完全一致,宽屏无 hover 设备可能出现视觉与 aria 状态不一致;拆分 drawer / desktop-collapse 媒体对象并与 CSS 对齐。
- 状态机修订后首轮 sidebar-collapse 回归仍匹配旧
isMobileInputMode()函数名而失败;断言同步为 drawer → desktop-collapse 两分支顺序后重跑。
完成结论
- 7 个阶段全部完成;独立终审复核通过。
- 无新增主题、资产或远程运行时依赖;所有现有主题共用功能层,富视觉主题仅覆盖轨道视觉。