From 8140613eb0922657312c1b940bf797869181bf31 Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Tue, 3 May 2022 00:52:21 -0400 Subject: [PATCH] Placing commit before making major page transition change to LandingPage.tsx --- src/App.css | 35 ---------- src/App.tsx | 7 +- src/components/HomeView.css | 1 + src/components/LandingPage.css | 12 ++-- src/components/LandingPage.tsx | 118 ++++++++++++++++++++++----------- src/img/pixelBGWide.png | Bin 18379 -> 0 bytes 6 files changed, 94 insertions(+), 79 deletions(-) delete mode 100644 src/img/pixelBGWide.png diff --git a/src/App.css b/src/App.css index 74b5e05..4931613 100644 --- a/src/App.css +++ b/src/App.css @@ -1,38 +1,3 @@ .App { text-align: center; } - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.tsx b/src/App.tsx index 00130b8..1e9a806 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,9 +10,10 @@ function App() { } /> } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> diff --git a/src/components/HomeView.css b/src/components/HomeView.css index 0bb4ec5..b4a3f52 100644 --- a/src/components/HomeView.css +++ b/src/components/HomeView.css @@ -1,4 +1,5 @@ .HomeView { + position: absolute; display: flex; flex-direction: column; justify-content: center; diff --git a/src/components/LandingPage.css b/src/components/LandingPage.css index c462fa0..00f13c7 100644 --- a/src/components/LandingPage.css +++ b/src/components/LandingPage.css @@ -14,9 +14,6 @@ box-sizing: border-box; height: 100vh; width: 100vw; - background-image: url("/src/img/pixelBGWide.png"); - background-position: center; - background-size: cover; /* font-family: "VT323", monospace; */ font-family: "munro"; font-weight: 400; @@ -36,8 +33,11 @@ align-items: center; justify-content: center; box-sizing: border-box; + margin-bottom: 0%; width: 100%; - margin-bottom: 50px; + background-image: url("/src/img/pixelBGWide.png"); + background-origin: content-box; + background-size: auto 100vh; } .LandingPage .link-container { @@ -48,6 +48,10 @@ box-sizing: border-box; /* margin-top: 80px; */ width: 100%; + background-image: url("/src/img/pixelBGWide.png"); + background-origin: content-box; + background-size: auto 100vh; + background-position: 0% -100%; } .LandingPage .lp-link h1, diff --git a/src/components/LandingPage.tsx b/src/components/LandingPage.tsx index 14b8fe3..6bd25fd 100644 --- a/src/components/LandingPage.tsx +++ b/src/components/LandingPage.tsx @@ -2,7 +2,8 @@ import { useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import "./LandingPage.css"; import LandingPageLink from "./LandingPageLink"; -import { animated } from "react-spring"; +import { animated, useTransition } from "react-spring"; +import HomeView from "./HomeView"; const LandingPage = () => { // - - - - - STATES / FUNCTIONALITY - - - - - @@ -15,19 +16,48 @@ const LandingPage = () => { const [link2Path, setLink2Path] = useState(""); const currentPath = useLocation().pathname; const navigate = useNavigate(); - // const transitionUp = useTransition(isActivePage, { - // initial: {}, - // // from: { opacity: 1, transform: "translate(0,0)" }, - // // leave: { opacity: 1, transform: "translate(0,100%)" }, - // }); + const transDuration = 200; + const transitionUp = useTransition(isActivePage, { + initial: { + opacity: 1, + marginBottom: "0%", + config: { duration: transDuration }, + }, + from: { + opacity: 1, + marginBottom: "0%", + config: { duration: transDuration }, + }, + leave: { + opacity: 0.5, + marginBottom: "100%", + config: { duration: transDuration }, + }, + }); + const transitionDown = useTransition(isActivePage, { + initial: { + opacity: 1, + marginTop: "0%", + config: { duration: transDuration }, + }, + from: { opacity: 1, marginTop: "0%", config: { duration: transDuration } }, + leave: { + opacity: 0.5, + marginTop: "100%", + config: { duration: transDuration }, + }, + }); useEffect(() => { if (firstRender) { setFirstRender(false); - } else { + } else if ( + currentPath.endsWith("/gamedev") || + currentPath.endsWith("/webdev") + ) { setIsActivePage(false); } - }, []); + }, [currentPath]); useEffect(() => { if (currentPath === "/") { @@ -41,45 +71,59 @@ const LandingPage = () => { } else if (currentPath === "/landing/portfolio") { setCurrentDisplay("Portfolio"); setLink1Text("Web Dev"); - setLink1Path("/home/portfolio/webdev"); + setLink1Path("/landing/portfolio/webdev"); setLink2Text("Game Dev"); - setLink2Path("/home/portfolio/gamedev"); + setLink2Path("/landing/portfolio/gamedev"); } else if (currentPath === "/landing/blog") { setCurrentDisplay("Blog"); setLink1Text("Web Dev"); - setLink1Path("/home/blog/webdev"); + setLink1Path("/landing/blog/webdev"); setLink2Text("Game Dev"); - setLink2Path("/home/blog/gamedev"); + setLink2Path("/landing/blog/gamedev"); + } else if (currentPath === "/home/:location/:content") { + console.log("made it here"); } }, [currentPath]); return (
- - - - - - - + {transitionUp((style, item) => + item ? ( + + + + ) : ( + + ) + )} + {transitionDown((style, item) => + item ? ( + + + + + ) : ( + "" + ) + )}
); }; diff --git a/src/img/pixelBGWide.png b/src/img/pixelBGWide.png deleted file mode 100644 index 2be9887fd64a23d234a6602f43c893e1172ca8c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18379 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