Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
76 lines (64 loc) · 2.16 KB
/
Copy pathscript.js
File metadata and controls
76 lines (64 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const burger = document.getElementById("burgerMenu");
const navMenu = document.getElementById("navMenu");
const body = document.body;
function toggleMenu() {
const isOpen = navMenu.classList.toggle("open");
burger.classList.toggle("open", isOpen);
body.classList.toggle("menu-open", isOpen);
burger.setAttribute("aria-expanded", isOpen ? "true" : "false");
burger.setAttribute("aria-label", isOpen ? "Close menu" : "Open menu");
}
function closeMenu() {
navMenu.classList.remove("open");
burger.classList.remove("open");
body.classList.remove("menu-open");
burger.setAttribute("aria-expanded", "false");
burger.setAttribute("aria-label", "Open menu");
}
burger.addEventListener("click", toggleMenu);
navMenu.querySelectorAll("a").forEach((link) => {
link.addEventListener("click", closeMenu);
});
window.addEventListener("resize", () => {
if (window.innerWidth > 768 && navMenu.classList.contains("open")) {
closeMenu();
}
});
document.addEventListener("keydown", (e) => {
if (e.key === "Escape" && navMenu.classList.contains("open")) closeMenu();
});
const navBarInner = document.querySelector(".navBarInner");
window.addEventListener("scroll", () => {
navBarInner.style.padding =
window.scrollY > 20 ? "0.7rem 3rem" : "1.1rem 3rem";
});
const navLinks = document.querySelectorAll(".navMenu a");
const sections = document.querySelectorAll(
"#home, #about, #projects, #contact"
);
function setActiveLink(sectionId) {
navLinks.forEach((link) => {
link.classList.toggle(
"active",
link.getAttribute("href") === `#${sectionId}`
);
});
}
navLinks.forEach((link) => {
link.addEventListener("click", () => {
const sectionId = link.getAttribute("href").replace("#", "");
setActiveLink(sectionId);
});
});
function updateActiveSection() {
let currentSection = "home";
sections.forEach((section) => {
const sectionTop = section.offsetTop - 150;
if (window.scrollY >= sectionTop) {
currentSection = section.id;
}
});
setActiveLink(currentSection);
}
window.addEventListener("scroll", updateActiveSection);
updateActiveSection();