summaryrefslogtreecommitdiffstats
path: root/src/scripts/lib/siteHeader.ts
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
committerVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
commitc1e28224aa2e1450031669d9a7e359b63e04687d (patch)
tree68f3d8905c763a91f68001d868197effa92adafa /src/scripts/lib/siteHeader.ts
downloadcorvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.gz
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.bz2
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.zip
Init
Diffstat (limited to 'src/scripts/lib/siteHeader.ts')
-rw-r--r--src/scripts/lib/siteHeader.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/scripts/lib/siteHeader.ts b/src/scripts/lib/siteHeader.ts
new file mode 100644
index 0000000..0d9ec43
--- /dev/null
+++ b/src/scripts/lib/siteHeader.ts
@@ -0,0 +1,37 @@
1export function mountSiteHeader() {
2 const headerEl = document.querySelector<HTMLElement>(".c-site-header");
3
4 if (headerEl) {
5 const navbarEl = headerEl?.querySelector(".o-navbar--static-white");
6 const logoEl = headerEl?.querySelector(".c-logo--static-white");
7 const buttonEls = headerEl?.querySelectorAll(".o-button--static-white");
8
9 let settings: IntersectionObserverInit;
10
11 const boundingRect = headerEl.getBoundingClientRect();
12
13 if (boundingRect.top > 0) {
14 settings = {
15 rootMargin: "1px 0px -100% 0px",
16 };
17 } else {
18 settings = {
19 root: document.documentElement,
20 rootMargin: "-1px 0px 0px 0px",
21 threshold: [1],
22 };
23 }
24
25 const observer = new IntersectionObserver(([e]) => {
26 const scroll = e?.isIntersecting;
27 headerEl.classList.toggle("is-scroll", scroll);
28 navbarEl?.classList.toggle("o-navbar--static-white", !scroll);
29 logoEl?.classList.toggle("c-logo--static-white", !scroll);
30 for (const buttonEl of buttonEls) {
31 buttonEl.classList.toggle("o-button--static-white", !scroll);
32 }
33 }, settings);
34
35 observer.observe(headerEl);
36 }
37}