diff --git a/app.js b/app.js index ad75b9e..5410dec 100644 --- a/app.js +++ b/app.js @@ -38,12 +38,16 @@ const MODES = { }; syncViewportHeight(); +window.addEventListener("load", syncViewportHeight); window.addEventListener("resize", syncViewportHeight); +window.addEventListener("scroll", syncViewportHeight, { passive: true }); window.addEventListener("pageshow", syncViewportHeight); window.addEventListener("orientationchange", syncViewportHeight); window.visualViewport?.addEventListener("resize", syncViewportHeight); window.visualViewport?.addEventListener("scroll", syncViewportHeight); window.setTimeout(syncViewportHeight, 0); +window.setTimeout(syncViewportHeight, 150); +window.setTimeout(syncViewportHeight, 400); window.requestAnimationFrame(() => { window.requestAnimationFrame(syncViewportHeight); }); @@ -91,7 +95,14 @@ switch (PAGE) { } function syncViewportHeight() { - const viewportHeight = window.visualViewport?.height ?? window.innerHeight; + const visibleHeight = window.visualViewport?.height ?? window.innerHeight; + const viewportTopOffset = window.visualViewport?.offsetTop ?? 0; + const viewportHeight = Math.max( + visibleHeight + viewportTopOffset, + window.innerHeight, + document.documentElement.clientHeight, + ); + document.documentElement.style.setProperty("--app-viewport-height", `${Math.round(viewportHeight)}px`); }