2026-05-17 13:41:57 +02:00
|
|
|
|
// HEADER ------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
window.addEventListener('scroll', () => {
|
|
|
|
|
|
const collapsed = window.scrollY > 80;
|
|
|
|
|
|
document.querySelector('.site-header').classList.toggle('is-closed', collapsed);
|
|
|
|
|
|
document.body.classList.toggle('header-is-closed', collapsed);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
document.querySelector('#menu-toggle').addEventListener('click', () => {
|
|
|
|
|
|
document.querySelector('.site-header').classList.toggle('is-closed');
|
|
|
|
|
|
document.body.classList.toggle('header-is-closed');
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// SUBMENU ------------------------------------------------------------
|
|
|
|
|
|
|
2026-05-16 20:37:46 +02:00
|
|
|
|
const submenu = document.querySelector('.submenu');
|
|
|
|
|
|
const menuItems = document.querySelectorAll('#menu li');
|
|
|
|
|
|
|
|
|
|
|
|
menuItems.forEach(li => {
|
|
|
|
|
|
li.addEventListener('click', () => {
|
|
|
|
|
|
const isSelected = li.classList.contains('selected');
|
|
|
|
|
|
menuItems.forEach(item => item.classList.remove('selected'));
|
|
|
|
|
|
if (!isSelected) {
|
|
|
|
|
|
li.classList.add('selected');
|
|
|
|
|
|
submenu.style.maxHeight = '100vh';
|
|
|
|
|
|
} else {
|
|
|
|
|
|
submenu.style.maxHeight = '0';
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
2026-05-16 20:47:43 +02:00
|
|
|
|
|
2026-05-17 13:41:57 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// MOVE STIKERS ------------------------------------------------------------
|
|
|
|
|
|
|
2026-05-16 20:47:43 +02:00
|
|
|
|
document.querySelectorAll('.stickers a').forEach(sticker => {
|
|
|
|
|
|
let isDragging = false;
|
2026-05-17 13:41:57 +02:00
|
|
|
|
let hasMoved = false;
|
2026-05-16 20:47:43 +02:00
|
|
|
|
let startX, startY, startLeft, startTop;
|
|
|
|
|
|
|
|
|
|
|
|
sticker.addEventListener('mousedown', (e) => {
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
isDragging = true;
|
2026-05-17 13:41:57 +02:00
|
|
|
|
hasMoved = false;
|
2026-05-16 20:47:43 +02:00
|
|
|
|
startX = e.clientX;
|
|
|
|
|
|
startY = e.clientY;
|
|
|
|
|
|
const computed = getComputedStyle(sticker);
|
|
|
|
|
|
startLeft = parseFloat(computed.left);
|
|
|
|
|
|
startTop = parseFloat(computed.top);
|
|
|
|
|
|
sticker.style.cursor = 'grabbing';
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
document.addEventListener('mousemove', (e) => {
|
|
|
|
|
|
if (!isDragging) return;
|
2026-05-17 13:41:57 +02:00
|
|
|
|
hasMoved = true;
|
2026-05-16 20:47:43 +02:00
|
|
|
|
sticker.style.left = (startLeft + e.clientX - startX) + 'px';
|
|
|
|
|
|
sticker.style.top = (startTop + e.clientY - startY) + 'px';
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
document.addEventListener('mouseup', () => {
|
|
|
|
|
|
if (!isDragging) return;
|
|
|
|
|
|
isDragging = false;
|
|
|
|
|
|
sticker.style.cursor = '';
|
|
|
|
|
|
});
|
2026-05-17 13:41:57 +02:00
|
|
|
|
|
|
|
|
|
|
sticker.addEventListener('click', (e) => {
|
|
|
|
|
|
if (hasMoved) {
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
hasMoved = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2026-05-16 20:47:43 +02:00
|
|
|
|
});
|