From e6fd59c7acd9422e8b0737a462e87177804927f1 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 16:25:24 -0400 Subject: [PATCH 01/11] added function for nav buttons along the bottom --- src/Home/Home.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Home/Home.js b/src/Home/Home.js index a0cd99fa..3b59de3f 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -19,7 +19,9 @@ const Home = () => { setCurrentImageIndex(prevIndex => (prevIndex + 1) % images.length); }; - + const handleButtonNav = (selectedIndex) => { + setCurrentImageIndex(selectedIndex); + } const toggleMute = () => { setIsMuted(!isMuted); From db11a6a10db6ae64e0d0716c38ba9d88dc4250f8 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 16:40:06 -0400 Subject: [PATCH 02/11] added array expansion function based on images.length --- src/Carousel/Carousel.js | 5 +++++ src/Home/Home.js | 1 + 2 files changed, 6 insertions(+) diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index 609298b6..74ba031c 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -28,6 +28,11 @@ export const text = [ "Looks Good To Merge, Let's Get The Money, Let's Guzzle That Milk", ] +const getNavIndexesArray = () => { + // Helper function to turn images.length, n (ex. 3), into an array series of integers from 0 to n (ex. [0, 1, 2]) + return Array.from({ length: images.length }, (_, i) => i); +} + export const Carousel = ({ imageIndex }) => { return (
diff --git a/src/Home/Home.js b/src/Home/Home.js index 3b59de3f..0bcb0ee7 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -20,6 +20,7 @@ const Home = () => { }; const handleButtonNav = (selectedIndex) => { + console.log(selectedIndex); setCurrentImageIndex(selectedIndex); } From 4293e94afe45cdb09fe5e7761d827f36f8f41311 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 16:51:16 -0400 Subject: [PATCH 03/11] removed array making function and added nav buttons using map loop --- src/Carousel/Carousel.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index 74ba031c..3a84732a 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -28,11 +28,6 @@ export const text = [ "Looks Good To Merge, Let's Get The Money, Let's Guzzle That Milk", ] -const getNavIndexesArray = () => { - // Helper function to turn images.length, n (ex. 3), into an array series of integers from 0 to n (ex. [0, 1, 2]) - return Array.from({ length: images.length }, (_, i) => i); -} - export const Carousel = ({ imageIndex }) => { return (
@@ -61,7 +56,17 @@ export const Carousel_Rotate_Right = ({ onRotate }) => {
); -}; +}; + +export const Carousel_Navigation_Buttons = ({ onClick }) => { + return ( +
+ {images.map((img, index) => ( + + ))} +
+ ); +} From efea98dca000267d3473c3e22630934324684a1b Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 17:31:01 -0400 Subject: [PATCH 04/11] added functioning navigation buttons --- src/Carousel/Carousel.css | 14 ++++++++++++-- src/Carousel/Carousel.js | 10 ++++++---- src/Home/Home.js | 3 ++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index a73df19c..57719967 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -10,7 +10,7 @@ body { flex-direction: column; align-items: center; justify-content: center; - margin: 50px auto; + margin: 50px auto 10px auto; position: relative; /* Relative positioning for the button container */ width: 80vw; /* Set a fixed width for the carousel */ /* height: 80vh; Set a fixed height for the carousel */ @@ -18,7 +18,6 @@ body { border-radius: 5%; background-size: cover; background-size: no-repeat; - } .Carousel img { @@ -61,3 +60,14 @@ body { margin-left: auto; /* Pushes the button to the left */ } +.nav-button { + background-color: #4a5568; + width: 1rem; + height: 1rem; + border-radius: 0.5rem; + margin: 0.25rem; +} + +.nav-buttons-container{ + margin-bottom: 40px; +} \ No newline at end of file diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index 3a84732a..d9a9f3a5 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -30,7 +30,7 @@ export const text = [ export const Carousel = ({ imageIndex }) => { return ( -
+
{name[imageIndex]}
{`Displaying
{text[imageIndex]}
@@ -58,11 +58,13 @@ export const Carousel_Rotate_Right = ({ onRotate }) => { ); }; -export const Carousel_Navigation_Buttons = ({ onClick }) => { +export const Carousel_Navigation_Buttons = ({ onUse, activeIndex }) => { return (
- {images.map((img, index) => ( - + {images.map((_, index) => ( + ))}
); diff --git a/src/Home/Home.js b/src/Home/Home.js index 0bcb0ee7..4d0614ab 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -2,7 +2,7 @@ import { useState, useRef, useEffect } from 'react'; import "./Home.css"; import Navbar from "../Navbar/Navbar"; import Footer from "../Footer/Footer"; -import {Carousel, Carousel_Rotate_Left, Carousel_Rotate_Right, images} from '../Carousel/Carousel'; +import {Carousel, Carousel_Rotate_Left, Carousel_Rotate_Right, Carousel_Navigation_Buttons, images} from '../Carousel/Carousel'; const Home = () => { @@ -122,6 +122,7 @@ const Home = () => {
+
From 6ac9a95d8fa84de2d8f0fc6336e0ff244e41e86f Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 19:14:32 -0400 Subject: [PATCH 05/11] added working fade feature, recolored left and right buttons --- public/images/arrow_left_alt.png | Bin 0 -> 30872 bytes public/images/arrow_right_alt.png | Bin 0 -> 28430 bytes src/Carousel/Carousel.css | 34 +++++++++++++++++-------- src/Carousel/Carousel.js | 40 ++++++++++++++++++++---------- src/Home/Home.js | 28 +++++++++++++++++---- 5 files changed, 74 insertions(+), 28 deletions(-) create mode 100644 public/images/arrow_left_alt.png create mode 100644 public/images/arrow_right_alt.png diff --git a/public/images/arrow_left_alt.png b/public/images/arrow_left_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ff0e3c1cbb4b04a4ead4a79a3e4f1a9eeb8c79 GIT binary patch literal 30872 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 B&9wjk literal 0 HcmV?d00001 diff --git a/public/images/arrow_right_alt.png b/public/images/arrow_right_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..e442cf23962c4088d9903f5ce76e368a3cd169e7 GIT binary patch literal 28430 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 J->cd@{y(-H%D?~s literal 0 HcmV?d00001 diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index 57719967..6af833fc 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -26,22 +26,24 @@ body { object-position: 55% 50%; justify-content: center; align-items: center; + transition: 0.5s ease; } .left-button button, .right-button button { - background-color: #4a5568; + background-color: black; color: white; border: none; - border-radius: 5px; + border-radius: 50%; cursor: pointer; - padding: 8px 16px; + padding: 1rem; + display: flex; } .left-button img, .right-button img { width: 30px; /* Adjust the width as needed */ height: auto; /* Maintains the aspect ratio */ - display: block; /* Ensures the image doesn't have extra space around it */ - margin-top: 30px; + align-self: center; + justify-self: center; } .button-container { @@ -61,11 +63,23 @@ body { } .nav-button { - background-color: #4a5568; - width: 1rem; - height: 1rem; - border-radius: 0.5rem; - margin: 0.25rem; + width: 2rem; + height: 2rem; + border-radius: 50%; + margin: 0 0.25rem 0 0.25rem; + border: 0.2rem solid transparent; + padding: 0.2rem; + background-clip: content-box; + + transition: + transform 0.5s ease, + border 0.5s ease, + background-color 0.5s ease; +} + +.nav-button:hover{ + border: 0.2rem solid purple; + transform: scale(1.3); } .nav-buttons-container{ diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index d9a9f3a5..f9612d48 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -28,41 +28,55 @@ export const text = [ "Looks Good To Merge, Let's Get The Money, Let's Guzzle That Milk", ] -export const Carousel = ({ imageIndex }) => { +export const Carousel = ({ imageIndex, fade }) => { return ( -
-
{name[imageIndex]}
- {`Displaying -
{text[imageIndex]}
+
+
{name[imageIndex]}
+ + {`Displaying +
{text[imageIndex]}
); }; -export const Carousel_Rotate_Left = ({ onRotate }) => { +export const Carousel_Rotate_Left = ({fadeFunction}) => { return (
-
); }; -export const Carousel_Rotate_Right = ({ onRotate }) => { +export const Carousel_Rotate_Right = ({fadeFunction}) => { return (
-
); }; -export const Carousel_Navigation_Buttons = ({ onUse, activeIndex }) => { +export const Carousel_Navigation_Buttons = ({ fadeFunction, movementFunction, activeIndex }) => { return (
{images.map((_, index) => ( - ))} diff --git a/src/Home/Home.js b/src/Home/Home.js index 4d0614ab..78852c9f 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -10,6 +10,7 @@ const Home = () => { const audioRef = useRef(null); // Ref for the audio element const [videoPlaying, setVideoPlaying] = useState(false); const [currentImageIndex, setCurrentImageIndex] = useState(0); + const [fade, setFade] = useState(false); const handleRotateLeft = () => { setCurrentImageIndex(prevIndex => (prevIndex - 1 + images.length) % images.length); @@ -20,10 +21,27 @@ const Home = () => { }; const handleButtonNav = (selectedIndex) => { - console.log(selectedIndex); setCurrentImageIndex(selectedIndex); } + const handleFadeArrows = (movementFunction) => { + setFade(true); + setTimeout(() => { + movementFunction(); + setFade(false); + }, 500) + } + + const handleFadeNav = (movementFunction, selectedIndex) => { + if(!(selectedIndex === currentImageIndex)){ + setFade(true); + setTimeout(() => { + movementFunction(selectedIndex); + setFade(false); + }, 0.75 * 1000) + } + } + const toggleMute = () => { setIsMuted(!isMuted); if (audioRef.current) { @@ -117,12 +135,12 @@ const Home = () => {

Meet Our Charactetrs!

- +
- - + handleFadeArrows(handleRotateLeft)} /> + handleFadeArrows(handleRotateRight)} />
- +
From 8905436c4188acd802ed141d2e0bb0874c1bb73c Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 19:40:29 -0400 Subject: [PATCH 06/11] added some image preloading to resolve a carousel loading issue --- src/Carousel/Carousel.css | 26 ++++++++++++++++++++++---- src/Carousel/Carousel.js | 6 ++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index 6af833fc..dc615367 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -32,18 +32,36 @@ body { .left-button button, .right-button button { background-color: black; color: white; - border: none; + width: 4rem; + height: 4rem; border-radius: 50%; cursor: pointer; - padding: 1rem; display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.5s ease; + border: 0.2rem solid transparent; + padding: 0.2rem; + background-clip: content-box; + + transition: + transform 0.5s ease, + border 0.5s ease, + background-color 0.1s ease; +} + +.left-button button:hover, .right-button button:hover { + border: 0.2rem solid purple; + transform: scale(1.3); +} + +.left-button button:active, .right-button button:active { + background-color: purple; } .left-button img, .right-button img { width: 30px; /* Adjust the width as needed */ height: auto; /* Maintains the aspect ratio */ - align-self: center; - justify-self: center; } .button-container { diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index f9612d48..5ea3ec9f 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -10,6 +10,12 @@ export const images = [ "images/LGTM.png", ]; +// Preload the images to reduce the chance of oddities occuring on the carousel +for (const image of images) { + const imageElement = new Image(); + imageElement.src = image; + } + export const name = [ "C++", "Java", From ed177c57fc54fabd0eeaf29a72617d307294d501 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Mon, 2 Sep 2024 20:12:14 -0400 Subject: [PATCH 07/11] synced both fade functions to have the same fade time --- src/Home/Home.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Home/Home.js b/src/Home/Home.js index 78852c9f..9cf3705c 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -11,6 +11,7 @@ const Home = () => { const [videoPlaying, setVideoPlaying] = useState(false); const [currentImageIndex, setCurrentImageIndex] = useState(0); const [fade, setFade] = useState(false); + const fadeTimeout = 0.75 * 1000; const handleRotateLeft = () => { setCurrentImageIndex(prevIndex => (prevIndex - 1 + images.length) % images.length); @@ -29,7 +30,7 @@ const Home = () => { setTimeout(() => { movementFunction(); setFade(false); - }, 500) + }, fadeTimeout) } const handleFadeNav = (movementFunction, selectedIndex) => { @@ -38,7 +39,7 @@ const Home = () => { setTimeout(() => { movementFunction(selectedIndex); setFade(false); - }, 0.75 * 1000) + }, fadeTimeout) } } From 4432ed899199189ee4f314e9a6b2c9cab173a58c Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Tue, 3 Sep 2024 08:31:36 -0400 Subject: [PATCH 08/11] removed black background on left and right buttons --- src/Carousel/Carousel.css | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index dc615367..524c9705 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -30,16 +30,18 @@ body { } .left-button button, .right-button button { - background-color: black; - color: white; + /* base button layout */ + background-color: transparent; width: 4rem; height: 4rem; border-radius: 50%; - cursor: pointer; + + /* centering image in button */ display: flex; align-items: center; justify-content: center; - transition: background-color 0.5s ease; + + /* ring animation */ border: 0.2rem solid transparent; padding: 0.2rem; background-clip: content-box; @@ -47,7 +49,7 @@ body { transition: transform 0.5s ease, border 0.5s ease, - background-color 0.1s ease; + background-color 0.2s ease; } .left-button button:hover, .right-button button:hover { @@ -81,10 +83,13 @@ body { } .nav-button { + /* base nav button layout */ width: 2rem; height: 2rem; border-radius: 50%; margin: 0 0.25rem 0 0.25rem; + + /* ring animation */ border: 0.2rem solid transparent; padding: 0.2rem; background-clip: content-box; From 18143eb1ad4e8b09395c4e6cc8b681a3a352e3f5 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Tue, 3 Sep 2024 09:41:12 -0400 Subject: [PATCH 09/11] initial changes for mobile-friendliness --- src/Carousel/Carousel.css | 15 ++++++++------- src/Carousel/Carousel.js | 8 ++++---- src/Home/Home.css | 23 +++++++++++++++++++++-- src/Home/Home.js | 2 +- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index 524c9705..ac9987d3 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -5,23 +5,22 @@ body { } .Carousel { - height: 90vh; display: flex; flex-direction: column; align-items: center; justify-content: center; - margin: 50px auto 10px auto; + margin: auto auto 10px auto; position: relative; /* Relative positioning for the button container */ - width: 80vw; /* Set a fixed width for the carousel */ - /* height: 80vh; Set a fixed height for the carousel */ - overflow: hidden; /* Hide overflow to keep images within the container */ + width: fit-content; + height: fit-content; + border-radius: 5%; background-size: cover; background-size: no-repeat; } .Carousel img { - width: 50vh; /* Ensure the image covers the container's width */ + width: calc(15vw + 15vh); /* Ensure the image covers the container's width */ object-fit: cover; object-position: 55% 50%; justify-content: center; @@ -71,6 +70,7 @@ body { justify-content: bottom; align-items: bottom; position: absolute; + overflow: hidden; width: 180%; padding: 20px 0; box-sizing: border-box; @@ -106,5 +106,6 @@ body { } .nav-buttons-container{ - margin-bottom: 40px; + margin-top: auto; + margin-bottom: 2vh; } \ No newline at end of file diff --git a/src/Carousel/Carousel.js b/src/Carousel/Carousel.js index 5ea3ec9f..2c4c5ef8 100644 --- a/src/Carousel/Carousel.js +++ b/src/Carousel/Carousel.js @@ -38,9 +38,9 @@ export const Carousel = ({ imageIndex, fade }) => { return (
{ opacity: fade ? 0 : 1, transition: 'opacity 0.5s ease-in-out',}}/>
{text[imageIndex]}
diff --git a/src/Home/Home.css b/src/Home/Home.css index fc861c4c..1b3a34b8 100644 --- a/src/Home/Home.css +++ b/src/Home/Home.css @@ -62,7 +62,7 @@ #meetHeading{ font-family: cursive; - font-size: 4em; + font-size: calc(6vw + 2vh); padding-left: 20px; padding-right: 20px; @@ -110,7 +110,7 @@ #downloadLabel{ - font-size: 40px; + font-size: calc(4vw + 1vh); padding-bottom: 20px; } @@ -130,6 +130,25 @@ width: 100% } +#downloadButton a{ + font-size: calc(2vw + 0.5vh); +} + #musicButton{ z-index: 1; } + +.Carousel-Wrapper { + height: calc(75vh + 10vw); + width: 80vw; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 3vh auto 10px auto; + position: relative; /* Relative positioning for the button container */ + + border-radius: 5%; + background-size: cover; + background-size: no-repeat; +} \ No newline at end of file diff --git a/src/Home/Home.js b/src/Home/Home.js index 9cf3705c..6e0485b7 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -135,7 +135,7 @@ const Home = () => {

Meet Our Charactetrs!

-
+
handleFadeArrows(handleRotateLeft)} /> From ce03fb6855b1ecb694ffdf9de4a58c80c047643f Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Tue, 3 Sep 2024 10:19:41 -0400 Subject: [PATCH 10/11] finished relative posistioning math for carousel arrow buttons --- src/Carousel/Carousel.css | 22 ++++++++++++++-------- src/Home/Home.js | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index ac9987d3..6c47e556 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -10,7 +10,6 @@ body { align-items: center; justify-content: center; margin: auto auto 10px auto; - position: relative; /* Relative positioning for the button container */ width: fit-content; height: fit-content; @@ -31,8 +30,8 @@ body { .left-button button, .right-button button { /* base button layout */ background-color: transparent; - width: 4rem; - height: 4rem; + width: 5vh; + height: 5vh; border-radius: 50%; /* centering image in button */ @@ -61,7 +60,7 @@ body { } .left-button img, .right-button img { - width: 30px; /* Adjust the width as needed */ + width: auto; /* Adjust the width as needed */ height: auto; /* Maintains the aspect ratio */ } @@ -71,15 +70,22 @@ body { align-items: bottom; position: absolute; overflow: hidden; - width: 180%; + width: 100%; + height: fit-content; padding: 20px 0; box-sizing: border-box; } /* Custom spacing between buttons using margin */ -.left-button, .right-button{ - margin-right: auto; /* Pushes the button to the left */ - margin-left: auto; /* Pushes the button to the left */ +.left-button{ + position: relative; + left: 2%; /* the left button should have a 2% margin from the border of the box */ +} + +/* Custom spacing between buttons using margin */ +.right-button{ + position: relative; + left: calc(98% - 10vh); /*the right button also needs a 2% border from the box, but life isn't easy. this is the formula for it: 100% - [margin_width] - 2*[button_size] */ } .nav-button { diff --git a/src/Home/Home.js b/src/Home/Home.js index 6e0485b7..fa4e28db 100644 --- a/src/Home/Home.js +++ b/src/Home/Home.js @@ -134,7 +134,7 @@ const Home = () => {
-

Meet Our Charactetrs!

+

Meet Our Characters!

From 029eaddc49da3d2e7bff8cda55c42220c8be2c23 Mon Sep 17 00:00:00 2001 From: Corey Phillips Date: Tue, 3 Sep 2024 15:40:14 -0400 Subject: [PATCH 11/11] gave nav-buttons-container absolute posistioning --- src/Carousel/Carousel.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Carousel/Carousel.css b/src/Carousel/Carousel.css index 6c47e556..dbcbe9ac 100644 --- a/src/Carousel/Carousel.css +++ b/src/Carousel/Carousel.css @@ -9,7 +9,7 @@ body { flex-direction: column; align-items: center; justify-content: center; - margin: auto auto 10px auto; + margin: auto auto auto auto; width: fit-content; height: fit-content; @@ -112,6 +112,6 @@ body { } .nav-buttons-container{ - margin-top: auto; - margin-bottom: 2vh; + position: absolute; + bottom: 1vh; } \ No newline at end of file