From cacf4ae074162c10ff2daa4f0e5d2012046eea34 Mon Sep 17 00:00:00 2001 From: bujinyuan Date: Wed, 22 Apr 2026 16:39:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(meeting):=20=E6=8F=90=E5=8D=87=20toolbar=20?= =?UTF-8?q?z-index=20=E7=A1=AE=E4=BF=9D=E6=88=90=E5=91=98/=E9=82=80?= =?UTF-8?q?=E8=AF=B7=E9=9D=A2=E6=9D=BF=E5=BC=80=E5=90=AF=E6=97=B6=E4=BB=8D?= =?UTF-8?q?=E5=8F=AF=E7=82=B9=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MemberPanel 和 InviteDialog 的 .panel-root 使用了 position:fixed; inset:0; z-index:200 的全屏遮罩,当面板打开时会覆盖整个视口,包括底部 toolbar。 这导致: - 用户再次点击 toolbar 的"成员"/"邀请"按钮时,命中的是 mask 而非按钮 - mask 的 @click.self 虽然也会关闭面板(通过点击空白区域), 但与 toolbar 按钮 toggle 的用户预期行为不一致 修复:把 MeetingToolbar .toolbar 的 z-index 从 15 提升到 210, 确保其高于 .panel-root (z:200) 而低于 .leave-mask (z:220)。 验证:Playwright 实测点击成员按钮 hitSelf=true,打开后再次点击正常关闭。 Made-with: Cursor --- frontend/src/components/meeting/MeetingToolbar.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/meeting/MeetingToolbar.vue b/frontend/src/components/meeting/MeetingToolbar.vue index 6b4405d..947501d 100644 --- a/frontend/src/components/meeting/MeetingToolbar.vue +++ b/frontend/src/components/meeting/MeetingToolbar.vue @@ -124,10 +124,12 @@ const emitIf = (name) => { backdrop-filter: blur(16px); border-top: 1rpx solid rgba(255, 255, 255, 0.08); /* flex-shrink:0 保证 body 内容高度过大时不会把 toolbar 挤出视口; - position:relative + z-index 提升按钮点击层级,避免 ChatPanel 遮挡 */ + z-index 需要高于 MemberPanel / InviteDialog 的遮罩(z-index: 200), + 这样成员 / 邀请抽屉打开时用户仍可点击 toolbar 按钮(二次点击 toggle 关闭面板)。 + 同时保持低于离会确认弹窗 .leave-mask (z-index: 220)。 */ flex-shrink: 0; position: relative; - z-index: 15; + z-index: 210; } .btn {