Skip to content

[P0] 任务中心浮层盖住语言切换,该控件完全无法点击 #54

Description

@yujiezhang-ops

语言切换不是"消失",是被任务中心的固定浮层压在下面完全点不到。控件仍然渲染、仍然可见、仍在无障碍树里,只是所有点击都被拦截 —— 所以看起来像消失,但比消失更难排查。

实测

在 1180×760(桌面窗口默认尺寸)下用真实样式表测量:

元素 top bottom z-index position
.language-picker 706 744 auto static
.task-center 708 744 20 fixed

两者重叠 179 × 36 px,几乎完全覆盖。把命中测试打在语言 <select> 的正中心:

document.elementFromPoint(cx, cy)
// → <SPAN>  (任务中心内部的元素)
// sel.contains(hit) === false

所以点击落在任务中心上,不会落到 select 上。

.theme-picker 的 bottom 正好是 706,差 2px 躲过了,这就是为什么只有语言那一个坏掉 —— 看起来像"这个按钮不见了"而不是"底部一片区域点不了"。

根因

app.css:1941

.task-center {
  position: fixed;
  left: 12px;
  bottom: 16px;
  z-index: 20;
  width: calc(var(--sidebar-width) - 24px);
}

任务中心在 #434e6d663 feat: change task manager to pop up style)改为弹出式后脱离了侧栏的 flex 流。NavigationSidebar.tsx:58 的注释也写明了「The task centre is fixed to the viewport's lower-left corner」。

问题在于:它脱流之后,侧栏底部不再为它预留空间.theme-pickermargin-top: auto 把主题和语言两行推到底部,而底部现在被一个 36px 高的浮层占着。

修法方向

不要靠调 bottomz-index 去躲 —— 那只是把碰撞挪到别的窗口高度上。让侧栏为浮层留出空间才是结构上正确的做法,例如给侧栏底部 padding-bottom 等于任务中心高度加间距,或者让任务中心回到 flex 流内、只让展开后的面板浮起来。

补测试时用 elementFromPoint 打在每个侧栏交互控件的中心,断言命中的就是它自己。纯粹断言 displayvisibility 抓不到这个 bug —— 该控件这两项都是正常的。

顺带一提,--sidebar-width 在 1180px 断点处会变成 204px(app.css:992),任务中心的宽度是从这个变量算的,所以验证要覆盖 1180px 以上和以下两档。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions