-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
50 lines (41 loc) · 1.54 KB
/
Copy pathscript.js
File metadata and controls
50 lines (41 loc) · 1.54 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
const sections = document.querySelectorAll("section");
const navLinks = document.querySelectorAll("nav ul li a");
/* --- MENU MOBILE (HAMBURGER) --- */
const menuToggle = document.getElementById("menuToggle");
const navUl = document.getElementById("navLinks");
if (menuToggle && navUl) {
const fermerMenu = () => {
menuToggle.classList.remove("actif");
navUl.classList.remove("ouvert");
menuToggle.setAttribute("aria-expanded", "false");
menuToggle.setAttribute("aria-label", "Ouvrir le menu");
};
const basculerMenu = () => {
const estOuvert = navUl.classList.toggle("ouvert");
menuToggle.classList.toggle("actif", estOuvert);
menuToggle.setAttribute("aria-expanded", String(estOuvert));
menuToggle.setAttribute(
"aria-label",
estOuvert ? "Fermer le menu" : "Ouvrir le menu",
);
};
menuToggle.addEventListener("click", basculerMenu);
// Ferme le menu automatiquement après avoir cliqué sur un lien
navLinks.forEach((link) => link.addEventListener("click", fermerMenu));
}
window.addEventListener("scroll", () => {
let current = "";
sections.forEach((section) => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (window.pageYOffset >= sectionTop - sectionHeight / 3) {
current = section.getAttribute("id");
}
});
navLinks.forEach((link) => {
link.classList.remove("active");
if (link.getAttribute("href").includes(current)) {
link.classList.add("active");
}
});
});