From b12de32a6723e9112a21a3e8a908b812c71cfc6c Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 17 May 2023 23:29:42 +0100 Subject: [PATCH] Fix shitty JS --- DV8-Expo/website/static/gen/packed.js | 6 +++--- DV8-Expo/website/static/js/nav.js | 15 ++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/DV8-Expo/website/static/gen/packed.js b/DV8-Expo/website/static/gen/packed.js index 4e724de..1f3c55f 100644 --- a/DV8-Expo/website/static/gen/packed.js +++ b/DV8-Expo/website/static/gen/packed.js @@ -1,3 +1,3 @@ -const defaultTitle="DV8 Game Expo 2023";let prevTitle;window.onscroll=()=>{scrollFunction();checkSection();};window.onload=()=>{scrollFunction()};function scrollFunction(){let nav=document.querySelector("nav");let scrollHeight=0;if(document.body.scrollTop>scrollHeight||document.documentElement.scrollTop>scrollHeight){nav.classList.add("scrolled");}else{nav.classList.remove("scrolled");}} -function checkSection(){let navTitle=document.querySelector("nav > h1");let sections=document.querySelectorAll("section");if(window.pageYOffset{navTitle.style.animation="";},200);} -sections.forEach((section)=>{let top=section.offsetTop;let bottom=section.offsetTop+section.offsetHeight;if(window.pageYOffset>=top&&window.pageYOffset{navTitle.style.animation="";},200);}});} \ No newline at end of file +const defaultTitle="DV8 Game Expo 2023";const spacing=48;let prevElement=null;window.onscroll=()=>{scrollFunction();checkSection();};window.onload=()=>{scrollFunction()};function scrollFunction(){let nav=document.querySelector("nav");let scrollHeight=0;if(document.body.scrollTop>scrollHeight||document.documentElement.scrollTop>scrollHeight){nav.classList.add("scrolled");}else{nav.classList.remove("scrolled");}} +function checkSection(){let navTitle=document.querySelector("nav > h1");let sections=document.querySelectorAll("section");if((window.pageYOffset+spacing){navTitle.style.animation="";},200);} +sections.forEach((section)=>{let top=section.offsetTop;let bottom=section.offsetTop+section.offsetHeight;if((window.pageYOffset+spacing)>=top&&window.pageYOffset<(bottom-spacing)){if(prevElement===section)return;navTitle.innerHTML=section.id;navTitle.style.animation="title-change 0.2s ease-in-out";prevElement=section;setTimeout(()=>{navTitle.style.animation="";},200);}});} \ No newline at end of file diff --git a/DV8-Expo/website/static/js/nav.js b/DV8-Expo/website/static/js/nav.js index d2c7c60..e97f374 100644 --- a/DV8-Expo/website/static/js/nav.js +++ b/DV8-Expo/website/static/js/nav.js @@ -1,5 +1,6 @@ const defaultTitle = "DV8 Game Expo 2023"; -let prevTitle; +const spacing = 48; // The amount of pixels to offset the section by +let prevElement = null; window.onscroll = () => { scrollFunction(); @@ -26,13 +27,13 @@ function checkSection() { let sections = document.querySelectorAll("section"); // If we're at the top of the page, set the title to the default - if (window.pageYOffset < sections[0].offsetTop) { + if ((window.pageYOffset + spacing) < sections[0].offsetTop) { // If we're already on the default title, don't do anything as it'll break the animation - if (prevTitle === defaultTitle) return; + if (prevElement === null) return; navTitle.innerHTML = defaultTitle; navTitle.style.animation = "title-change 0.2s ease-in-out"; - prevTitle = defaultTitle; + prevElement = null; // Remove the animation after it's done, so we can animate again setTimeout(() => { navTitle.style.animation = ""; }, 200); @@ -48,13 +49,13 @@ function checkSection() { // If the section is on the screen is: // 1. The top of the section is above the top of the screen // 2. The bottom of the section is below the bottom of the screen - if (window.pageYOffset >= top && window.pageYOffset < bottom) { + if ((window.pageYOffset + spacing) >= top && window.pageYOffset < (bottom - spacing)) { // If we're already on the section, don't do anything as it'll break the animation - if (prevTitle === section.id) return; + if (prevElement === section) return; navTitle.innerHTML = section.id; navTitle.style.animation = "title-change 0.2s ease-in-out"; - prevTitle = section.id; + prevElement = section; // Remove the animation after it's done, so we can animate again setTimeout(() => { navTitle.style.animation = ""; }, 200);