37 lines
948 B
JavaScript
37 lines
948 B
JavaScript
const header = document.querySelector(".site-header");
|
|
const navToggle = document.querySelector(".nav-toggle");
|
|
const navLinks = document.querySelectorAll(".site-nav a");
|
|
const reveals = document.querySelectorAll(".reveal");
|
|
|
|
if (navToggle && header) {
|
|
navToggle.addEventListener("click", () => {
|
|
const isOpen = header.classList.toggle("nav-open");
|
|
navToggle.setAttribute("aria-expanded", String(isOpen));
|
|
});
|
|
}
|
|
|
|
navLinks.forEach((link) => {
|
|
link.addEventListener("click", () => {
|
|
header?.classList.remove("nav-open");
|
|
navToggle?.setAttribute("aria-expanded", "false");
|
|
});
|
|
});
|
|
|
|
const observer = new IntersectionObserver(
|
|
(entries) => {
|
|
entries.forEach((entry) => {
|
|
if (!entry.isIntersecting) {
|
|
return;
|
|
}
|
|
|
|
entry.target.classList.add("is-visible");
|
|
observer.unobserve(entry.target);
|
|
});
|
|
},
|
|
{
|
|
threshold: 0.18,
|
|
},
|
|
);
|
|
|
|
reveals.forEach((element) => observer.observe(element));
|