From e264214b77a1c5d4c376da8e809294885e80f25a Mon Sep 17 00:00:00 2001
From: wwwwwwwww <526125649@qq.com>
Date: Fri, 17 Jul 2026 19:21:16 +0800
Subject: [PATCH] 1
---
video-gen-app/src/pages/LoginPage.tsx | 63 +++++++++++++++------------
1 file changed, 34 insertions(+), 29 deletions(-)
diff --git a/video-gen-app/src/pages/LoginPage.tsx b/video-gen-app/src/pages/LoginPage.tsx
index 9adb9673..29c182bd 100644
--- a/video-gen-app/src/pages/LoginPage.tsx
+++ b/video-gen-app/src/pages/LoginPage.tsx
@@ -48,6 +48,7 @@ const LoginPage: React.FC = () => {
const [siteName, setSiteName] = useState(initialInfo.siteName);
const [siteLogo, setSiteLogo] = useState(initialInfo.siteLogo);
const [loginBgVideo, setLoginBgVideo] = useState('');
+ const [mediaReady, setMediaReady] = useState(false);
const [agreementPrivacyUrl, setAgreementPrivacyUrl] = useState('');
const [siteCopyright, setSiteCopyright] = useState('');
@@ -288,9 +289,12 @@ const LoginPage: React.FC = () => {
return (
- {/* 背景视频/动图全屏铺满 — 预加载避免闪烁 */}
-
-
+ {/* 背景视频/动图全屏铺满 — 预加载完成后再显示页面 */}
+
setMediaReady(true)} />
+
+
+ {/* 内容区 — 媒体加载完成后淡入 */}
+
{/* 左上角 slogan */}
@@ -498,47 +502,48 @@ const LoginPage: React.FC = () => {
)}
+
+ {/* end media-ready wrapper */}
);
};
-const BackgroundVideo: React.FC<{ src: string }> = ({ src }) => {
+const BackgroundVideo: React.FC<{ src: string; onReady: () => void }> = ({ src, onReady }) => {
const [ready, setReady] = useState(false);
const vidRef = React.useRef(null);
- if (!src) return null;
+ const handleReady = () => {
+ if (ready) return;
+ setReady(true);
+ vidRef.current?.play().catch(() => {});
+ onReady();
+ };
+
+ if (!src) { onReady(); return null; }
const isGif = src.toLowerCase().endsWith('.gif');
const isWebp = src.toLowerCase().endsWith('.webp');
if (isGif || isWebp) {
- return
;
+ return
;
}
- const handleCanPlay = () => {
- setReady(true);
- vidRef.current?.play().catch(() => {});
- };
-
return (
- <>
- {/* 视频加载前显示静态背景图作为占位 */}
- {!ready && }
-
- >
+
);
};