adventskalender/shared/js/glitter.js aktualisiert
This commit is contained in:
@@ -1,21 +1,17 @@
|
|||||||
// Bratonien Glitter Hover Effekt – strikt nach data-day gruppiert
|
// Bratonien Glitter Hover Effekt – finale, symmetrische Version
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
const allElements = document.querySelectorAll(".door, .fluegel, .openfield");
|
||||||
|
|
||||||
// Alle relevanten Elemente einsammeln
|
// === Alle Elemente nach data-day gruppieren ===
|
||||||
const elems = document.querySelectorAll(".door, .openfield, .fluegel");
|
const groups = {};
|
||||||
|
allElements.forEach(el => {
|
||||||
// nach Tag gruppieren
|
|
||||||
const groupsByDay = {};
|
|
||||||
elems.forEach(el => {
|
|
||||||
const day = el.dataset.day;
|
const day = el.dataset.day;
|
||||||
if (!groupsByDay[day]) {
|
if (!groups[day]) groups[day] = [];
|
||||||
groupsByDay[day] = [];
|
groups[day].push(el);
|
||||||
}
|
|
||||||
groupsByDay[day].push(el);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// für jede Tagesgruppe Hover + Glitzer setzen
|
// === Für jede Gruppe Hover-Effekt einrichten ===
|
||||||
Object.values(groupsByDay).forEach(group => {
|
Object.values(groups).forEach(group => {
|
||||||
group.forEach(elem => {
|
group.forEach(elem => {
|
||||||
let canvas, ctx, particles = [], anim, hovering = false;
|
let canvas, ctx, particles = [], anim, hovering = false;
|
||||||
let cursorX = 0, cursorY = 0;
|
let cursorX = 0, cursorY = 0;
|
||||||
@@ -85,18 +81,19 @@ document.addEventListener("DOMContentLoaded", () => {
|
|||||||
anim = requestAnimationFrame(draw);
|
anim = requestAnimationFrame(draw);
|
||||||
}
|
}
|
||||||
|
|
||||||
// HOVER START
|
// === Hover Start ===
|
||||||
elem.addEventListener("mouseenter", () => {
|
elem.addEventListener("mouseenter", () => {
|
||||||
setupCanvas();
|
setupCanvas();
|
||||||
hovering = true;
|
hovering = true;
|
||||||
cancelAnimationFrame(anim);
|
cancelAnimationFrame(anim);
|
||||||
draw();
|
draw();
|
||||||
|
|
||||||
// WICHTIG: alle Elemente dieses Tages bekommen hover-proxy
|
// Alle Elemente mit gleichem Tag (door, flügel, openfield)
|
||||||
group.forEach(p => p.classList.add("hover-proxy"));
|
// bekommen gleichzeitig hover-proxy
|
||||||
|
group.forEach(e => e.classList.add("hover-proxy"));
|
||||||
});
|
});
|
||||||
|
|
||||||
// HOVER ENDE
|
// === Hover Ende ===
|
||||||
elem.addEventListener("mouseleave", () => {
|
elem.addEventListener("mouseleave", () => {
|
||||||
hovering = false;
|
hovering = false;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -107,7 +104,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
|||||||
}
|
}
|
||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
group.forEach(p => p.classList.remove("hover-proxy"));
|
group.forEach(e => e.classList.remove("hover-proxy"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user