From 55d33c091b4a367249b7714ddb879fd8c4674b2d Mon Sep 17 00:00:00 2001 From: Pine Date: Tue, 18 Aug 2026 07:50:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=9F=B3=E9=87=8F?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E5=85=B3=E9=97=AD=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=83=A8=E7=82=B9=E5=87=BB=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/PageHeader.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/PageHeader.jsx b/src/components/PageHeader.jsx index 4cf240b..25963d9 100644 --- a/src/components/PageHeader.jsx +++ b/src/components/PageHeader.jsx @@ -63,10 +63,16 @@ export default function PageHeader() { }; }, []); - // 点击面板外部 → 关闭音量面板 + // 点击音量容器(按钮+面板)外部 → 关闭面板; + // 用「目标是否在容器内」判断,避免面板内滑块交互(pointerdown)误关弹窗 + const volWrapRef = useRef(null); useEffect(() => { if (!volOpen) return undefined; - const close = () => setVolOpen(false); + const close = (e) => { + if (volWrapRef.current && !volWrapRef.current.contains(e.target)) { + setVolOpen(false); + } + }; document.addEventListener('pointerdown', close); return () => document.removeEventListener('pointerdown', close); }, [volOpen]); @@ -154,7 +160,7 @@ export default function PageHeader() { {/* 媒体轮播页:页眉内嵌播放控制 */} {location.pathname === '/screen' && } {/* 音量控制(媒体 + 音效) */} -
+