52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
let menuOpen = true;
|
|
|
|
function calcScroll() {
|
|
const scroll = window.scrollY;
|
|
const vh = window.innerHeight / 100;
|
|
const title = document.getElementById("title-page");
|
|
if (title == null) return;
|
|
|
|
title.style.setProperty("--scroll", Math.min(1, scroll / (77.5 * vh)));
|
|
}
|
|
|
|
function openMenu() {
|
|
const menu = document.getElementById("menu-modal");
|
|
if (menu == null) return;
|
|
requestAnimationFrame(() => menuOpen = false);
|
|
menu.showModal();
|
|
}
|
|
|
|
function closeMenu() {
|
|
const menu = document.getElementById("menu-modal");
|
|
if (menu == null) return;
|
|
requestAnimationFrame(() => menuOpen = true);
|
|
menu.close();
|
|
}
|
|
|
|
function main() {
|
|
document.body.addEventListener('wheel', preventScroll, { passive: false });
|
|
document.body.addEventListener('touchmove', preventScroll, { passive: false });
|
|
window.addEventListener("scroll", () => requestAnimationFrame(calcScroll));
|
|
|
|
const menu = document.getElementById("menu-modal");
|
|
|
|
if (menu) {
|
|
menu.addEventListener("click", clickMenuModal);
|
|
menu.addEventListener("touchstart", clickMenuModal);
|
|
}
|
|
}
|
|
|
|
function clickMenuModal(e) {
|
|
const menu = document.getElementById("menu-modal");
|
|
if (menu == null || e.target != menu) return;
|
|
closeMenu();
|
|
}
|
|
|
|
function preventScroll(e) {
|
|
if (menuOpen) return;
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
return false;
|
|
}
|
|
|
|
window.onload = main; |