From 4350595b257325fe9948d7af8ce6de734226467b Mon Sep 17 00:00:00 2001 From: Muhammad Herdy Iskandar <66510723+dyzulk@users.noreply.github.com> Date: Fri, 4 Aug 2023 08:53:34 +0700 Subject: [PATCH] Create ud-menu-scroll.js --- assets/js/ud-menu-scroll.js | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 assets/js/ud-menu-scroll.js diff --git a/assets/js/ud-menu-scroll.js b/assets/js/ud-menu-scroll.js new file mode 100644 index 0000000..13315df --- /dev/null +++ b/assets/js/ud-menu-scroll.js @@ -0,0 +1,41 @@ + // ==== for menu scroll + const pageLink = document.querySelectorAll(".ud-menu-scroll"); + + pageLink.forEach((elem) => { + elem.addEventListener("click", (e) => { + e.preventDefault(); + document.querySelector(elem.getAttribute("href")).scrollIntoView({ + behavior: "smooth", + offsetTop: 1 - 60, + }); + }); + }); + + // section menu active + function onScroll(event) { + const sections = document.querySelectorAll(".ud-menu-scroll"); + const scrollPos = + window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop; + + for (let i = 0; i < sections.length; i++) { + const currLink = sections[i]; + const val = currLink.getAttribute("href"); + const refElement = document.querySelector(val); + const scrollTopMinus = scrollPos + 73; + if ( + refElement.offsetTop <= scrollTopMinus && + refElement.offsetTop + refElement.offsetHeight > scrollTopMinus + ) { + document + .querySelector(".ud-menu-scroll") + .classList.remove("active"); + currLink.classList.add("active"); + } else { + currLink.classList.remove("active"); + } + } + } + + window.document.addEventListener("scroll", onScroll);