From 5517766f3f9998dc05ad78815e159ba14932bad4 Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Mon, 20 Jan 2025 00:56:05 +0800 Subject: [PATCH] BLOG-7 feat: motto section and with animation --- frontend/src/app/page.tsx | 18 ++++----- .../src/lib/home/framework/ui/AboutMe.tsx | 3 ++ .../lib/home/framework/ui/AnimatedMark.tsx | 40 +++++++++++++++++++ .../src/lib/home/framework/ui/FirstView.tsx | 17 ++++++++ frontend/src/lib/home/framework/ui/Motto.tsx | 18 +++++++++ 5 files changed, 85 insertions(+), 11 deletions(-) create mode 100644 frontend/src/lib/home/framework/ui/AboutMe.tsx create mode 100644 frontend/src/lib/home/framework/ui/AnimatedMark.tsx create mode 100644 frontend/src/lib/home/framework/ui/FirstView.tsx create mode 100644 frontend/src/lib/home/framework/ui/Motto.tsx diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 8c21ab0..91218ef 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -1,17 +1,13 @@ -import SelfTags from "@/lib/home/framework/ui/SelfTags"; +import AboutMe from "@/lib/home/framework/ui/AboutMe"; +import FirstView from "@/lib/home/framework/ui/FirstView"; +import Motto from "@/lib/home/framework/ui/Motto"; export default function HomePage() { return ( -
-

Hello 大家好!

-

- 我是 -
- Squid -
- 魷魚 -

- +
+ + +
); } diff --git a/frontend/src/lib/home/framework/ui/AboutMe.tsx b/frontend/src/lib/home/framework/ui/AboutMe.tsx new file mode 100644 index 0000000..e3e1dbe --- /dev/null +++ b/frontend/src/lib/home/framework/ui/AboutMe.tsx @@ -0,0 +1,3 @@ +export default function AboutMe() { + return <>; +} diff --git a/frontend/src/lib/home/framework/ui/AnimatedMark.tsx b/frontend/src/lib/home/framework/ui/AnimatedMark.tsx new file mode 100644 index 0000000..513c8b7 --- /dev/null +++ b/frontend/src/lib/home/framework/ui/AnimatedMark.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { useEffect, useRef, useState } from "react"; + +export default function AnimatedMark(props: { text: string; direction: "left" | "right" }) { + const [isVisible, setIsVisible] = useState(false); + + const element = useRef(null); + + const origin = props.direction === "left" ? "origin-left" : "origin-right"; + + useEffect(() => { + if (!element.current) { + return; + } + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setIsVisible(true); + console.log(element.current); + observer.disconnect(); + } + }); + }, + { threshold: 1 }, + ); + observer.observe(element.current); + }, []); + + return ( + + {props.text} + + ); +} diff --git a/frontend/src/lib/home/framework/ui/FirstView.tsx b/frontend/src/lib/home/framework/ui/FirstView.tsx new file mode 100644 index 0000000..2dcb929 --- /dev/null +++ b/frontend/src/lib/home/framework/ui/FirstView.tsx @@ -0,0 +1,17 @@ +import SelfTags from "@/lib/home/framework/ui/SelfTags"; + +export default function FirstView() { + return ( +
+

Hello 大家好!

+

+ 我是 +
+ Squid +
+ 魷魚 +

+ +
+ ); +} diff --git a/frontend/src/lib/home/framework/ui/Motto.tsx b/frontend/src/lib/home/framework/ui/Motto.tsx new file mode 100644 index 0000000..3e3032e --- /dev/null +++ b/frontend/src/lib/home/framework/ui/Motto.tsx @@ -0,0 +1,18 @@ +import AnimatedMark from "./AnimatedMark"; + +export default function Motto() { + return ( +
+
+
+ Keep + +
+
+ + Progressing +
+
+
+ ); +}