From 034bb7ff42d82c1488729555081908e110ece0a7 Mon Sep 17 00:00:00 2001 From: iye <1713042409@qq.com> Date: Fri, 15 May 2026 18:12:21 +0800 Subject: [PATCH] chore(ui): drop nav logo + revert hero to default-muted - Navigation: removed top-left , NavLinks now sit at the left edge. Logo component itself kept (still used by Footer / LoginForm / LoginModal). - HeroBanner: restored simple "default muted + autoplay" behavior. The earlier try-unmuted-fallback flow was working but produced unpredictable first-paint audio depending on browser autoplay policy; muted is the safer default. Co-Authored-By: Claude Opus 4.7 --- src/components/HeroBanner.tsx | 17 +++-------------- src/components/Navigation.tsx | 5 +---- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/components/HeroBanner.tsx b/src/components/HeroBanner.tsx index 71481e3..fdb065e 100644 --- a/src/components/HeroBanner.tsx +++ b/src/components/HeroBanner.tsx @@ -28,24 +28,13 @@ export default function HeroBanner({ className, }: HeroBannerProps) { const videoRef = useRef(null); - // 默认目标:带音播放。但浏览器对"带声音自动播放"有严格限制 —— - // 只有当用户与本站已有交互历史(autoplay policy "high engagement")时才允许。 - // 真实初始状态由下面的 effect 试播后写回:成功 → false,被拦截 → true。 - const [isMuted, setIsMuted] = useState(false); + const [isMuted, setIsMuted] = useState(true); useEffect(() => { const v = videoRef.current; if (!v || !videoSrc) return; - // 先尝试带音播放,失败立刻 fallback 静音播放(并把声音按钮置为静音态)。 - // 几乎所有首次访问场景都会走到 fallback,用户点声音按钮再解除静音。 - v.muted = false; - v.play() - .then(() => setIsMuted(false)) - .catch(() => { - v.muted = true; - setIsMuted(true); - v.play().catch(() => {}); - }); + v.muted = isMuted; + v.play().catch(() => {}); // 仅在 videoSrc 变化时执行 · 不依赖 isMuted(mute 切换由按钮处理) // eslint-disable-next-line react-hooks/exhaustive-deps }, [videoSrc]); diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index 515b274..f4e6a27 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -2,7 +2,6 @@ import { useEffect, useState } from "react"; import { usePathname } from "next/navigation"; -import Logo from "./Logo"; import NavLinks from "./NavLinks"; import SearchTrigger from "./SearchTrigger"; import AuthMenu from "./auth/AuthMenu"; @@ -82,9 +81,7 @@ export default function Navigation() { )} />