From a311c03a210519238144a8e40042226b6fd32212 Mon Sep 17 00:00:00 2001 From: bujinyuan Date: Wed, 22 Apr 2026 16:34:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(meeting):=20=E8=81=8A=E5=A4=A9=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E7=82=B9=E5=87=BB=E5=A4=B1=E6=95=88=20&=20=E6=88=90?= =?UTF-8?q?=E5=91=98/=E9=82=80=E8=AF=B7=E6=8C=89=E9=92=AE=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20toggle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ChatPanel 的 .btn-send 使用了 all:unset 导致 position 变为 static, 其 uni-app 自动注入的 ::after 伪元素(inset: 0 -1200px -80px 0) absolute 定位会回溯到 body 作为 containing block, 形成一个覆盖几乎整个视口的隐形遮罩层,导致聊天面板的关闭按钮 (.btn-close)、 输入框 (textarea) 甚至发送按钮本身周围区域都无法点击/输入。 修复: 1. ChatPanel 的 .btn-send::after 从仅 border:none 升级为 content:none + display:none,彻底抹除遮罩 2. room.vue 中 openMembers / openInvite 改为 toggle 切换, 解决"再次点击成员按钮面板不会关闭"的问题 验证:Playwright 真实 DOM 命中测试 close/textarea/send 全部 hitSelf=true, 成员按钮二次点击面板正常关闭。 Made-with: Cursor --- frontend/src/components/meeting/ChatPanel.vue | 12 ++++++++++-- frontend/src/pages/meeting/room.vue | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/meeting/ChatPanel.vue b/frontend/src/components/meeting/ChatPanel.vue index c2bb7ab..05d75a3 100644 --- a/frontend/src/components/meeting/ChatPanel.vue +++ b/frontend/src/components/meeting/ChatPanel.vue @@ -396,8 +396,16 @@ const close = () => emit('close') line-height: 1; box-sizing: border-box; } -/* 防御 uni-app H5 内部嵌套