From 6c599eafac36118217f16ce14558c78bfa3e5960 Mon Sep 17 00:00:00 2001 From: jingrow Date: Tue, 17 Jun 2025 21:41:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=8E=E5=8C=96header=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E5=8F=8A=E5=A2=9E=E5=8A=A0hero=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.jsx | 10 +- components/common/AnimatedText.jsx | 28 ++- components/headers/Header.jsx | 6 +- components/headers/LanguageSelect.jsx | 4 +- components/headers/LoginButton.jsx | 11 ++ components/headers/Nav.jsx | 6 +- components/homes/home-15/Hero.jsx | 275 +++++++++++++++----------- 7 files changed, 186 insertions(+), 154 deletions(-) create mode 100644 components/headers/LoginButton.jsx diff --git a/app/page.jsx b/app/page.jsx index 108e1c1..93c7a50 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -34,23 +34,15 @@ export default function Page() { <>
<> -
+
{/* /.swiper-container */}
- - {/*/.row */}
- {/* /.container */}
- {/* /section */} - - {/* Gallery 单独渲染,保证背景色全屏 */} - -
{" "} diff --git a/components/common/AnimatedText.jsx b/components/common/AnimatedText.jsx index 2fa5502..7d05c38 100644 --- a/components/common/AnimatedText.jsx +++ b/components/common/AnimatedText.jsx @@ -9,33 +9,27 @@ const stringsDefault = [ ]; const AnimatedText = ({ strings = stringsDefault }) => { - const [currentStr, setCurrentStr] = useState(strings[0]); + // 过滤掉空字符串 + const filteredStrings = strings.filter(str => !!str && str.trim() !== ""); + const [currentIndex, setCurrentIndex] = useState(0); const [animatedText, setAnimatedText] = useState(true); useEffect(() => { + if (filteredStrings.length === 0) return; const interval = setInterval(() => { setAnimatedText(false); setTimeout(() => { setAnimatedText(true); }, 200); - - setCurrentStr((prevStr) => { - if (prevStr === strings[0]) { - return strings[1]; - } else if (prevStr === strings[1]) { - return strings[2]; - } else { - return strings[0]; - } - }); - }, 2000); - + setCurrentIndex((prevIndex) => (prevIndex + 1) % filteredStrings.length); + }, 5000); return () => clearInterval(interval); // Cleanup interval on component unmount - }, []); + }, [filteredStrings]); + + if (filteredStrings.length === 0) return null; return ( <> - {" "} {animatedText ? ( { visibility: "visible", }} > - {currentStr} + {filteredStrings[currentIndex]} ) : ( { visibility: "hidden", }} > - {currentStr} + {filteredStrings[currentIndex]} )} diff --git a/components/headers/Header.jsx b/components/headers/Header.jsx index 6b892b2..aa47338 100644 --- a/components/headers/Header.jsx +++ b/components/headers/Header.jsx @@ -3,7 +3,7 @@ import React, { useEffect, useState } from "react"; import Nav from "./Nav"; import Link from "next/link"; import Image from "next/image"; -import LanguageSelect from "./LanguageSelect"; +import LoginButton from "./LoginButton"; import SocialLinks from "../contact/SocialLinks"; import { getSiteSettings } from "@/utlis/siteSettings"; @@ -20,7 +20,7 @@ export default function Header15() { const email = siteSettings.email; return ( -
+