/* =========================================================
O2 OPTIQUE — COMPORTEMENT DU MENU AU DÉFILEMENT
========================================================= */
(function () {
"use strict";
function initO2Header() {
var header = document.getElementById("masthead");
if (!header) {
return;
}
var previousScroll = window.scrollY || 0;
var topThreshold = 5;
var showThreshold = 80;
var directionThreshold = 6;
var ticking = false;
function updateHeader() {
var currentScroll = Math.max(
0,
window.scrollY || window.pageYOffset || 0
);
var difference = currentScroll - previousScroll;
document.body.classList.remove(
"o2-header-at-top",
"o2-header-visible",
"o2-header-hidden"
);
/* Tout en haut : menu totalement transparent */
if (currentScroll <= topThreshold) {
document.body.classList.add("o2-header-at-top");
}
/* Au début de la descente : le menu reste visible */
else if (currentScroll <= showThreshold) {
document.body.classList.add("o2-header-visible");
}
/* Plus bas : on détecte le sens du défilement */
else if (Math.abs(difference) >= directionThreshold) {
if (difference > 0) {
/* Descente : le menu disparaît vers le haut */
document.body.classList.add("o2-header-hidden");
} else {
/* Remontée : le menu réapparaît */
document.body.classList.add("o2-header-visible");
}
} else {
/* Conserver l'état actuel lors des petits mouvements */
if (document.body.classList.contains("o2-header-hidden")) {
document.body.classList.add("o2-header-hidden");
} else {
document.body.classList.add("o2-header-visible");
}
}
previousScroll = currentScroll;
ticking = false;
}
function requestUpdate() {
if (!ticking) {
window.requestAnimationFrame(updateHeader);
ticking = true;
}
}
/* État initial */
document.body.classList.add(
(window.scrollY || 0) <= topThreshold
? "o2-header-at-top"
: "o2-header-visible"
);
window.addEventListener("scroll", requestUpdate, {
passive: true
});
window.addEventListener("resize", requestUpdate);
updateHeader();
}
if (document.readyState === "loading") {
document.addEventListener(
"DOMContentLoaded",
initO2Header
);
} else {
initO2Header();
}
})();
Défiler vers le haut
Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.