| Server IP : 213.186.33.4 / Your IP : 216.73.216.59 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/www/ |
Upload File : |
const navbar = document.getElementById("navbar");
const menuButton = document.getElementById("menuButton");
const mobileMenu = document.getElementById("mobileMenu");
function updateNavbar() {
if (!navbar) return;
navbar.classList.toggle("scrolled", window.scrollY > 20);
}
function closeMobileMenu() {
if (!mobileMenu || !menuButton || !navbar) return;
mobileMenu.classList.remove("open");
navbar.classList.remove("open");
document.body.classList.remove("menu-open");
menuButton.setAttribute("aria-expanded", "false");
menuButton.setAttribute("aria-label", "Ouvrir le menu");
}
function toggleMobileMenu() {
if (!mobileMenu || !menuButton || !navbar) return;
const isOpen = mobileMenu.classList.toggle("open");
navbar.classList.toggle("open", isOpen);
document.body.classList.toggle("menu-open", isOpen);
menuButton.setAttribute("aria-expanded", String(isOpen));
menuButton.setAttribute("aria-label", isOpen ? "Fermer le menu" : "Ouvrir le menu");
}
window.addEventListener("scroll", updateNavbar, { passive: true });
window.addEventListener("resize", () => {
if (window.innerWidth > 1120) closeMobileMenu();
});
updateNavbar();
if (menuButton && mobileMenu) {
menuButton.addEventListener("click", toggleMobileMenu);
mobileMenu.querySelectorAll("a").forEach((link) => {
link.addEventListener("click", closeMobileMenu);
});
}
document.addEventListener("keydown", (event) => {
if (event.key === "Escape") closeMobileMenu();
});
const revealElements = document.querySelectorAll(".reveal");
if ("IntersectionObserver" in window) {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("visible");
observer.unobserve(entry.target);
}
});
},
{
threshold: 0.12,
rootMargin: "0px 0px -60px 0px"
}
);
revealElements.forEach((element) => observer.observe(element));
} else {
revealElements.forEach((element) => element.classList.add("visible"));
}