From 60ecacb4d46a201091e479910c79f76852986b9b Mon Sep 17 00:00:00 2001 From: Philip Peterson <1326208+philip-peterson@users.noreply.github.com> Date: Thu, 4 Jun 2026 00:02:27 -0700 Subject: [PATCH] Fix scrolling --- web/modules/custom/riverside_pt/js/scroll.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/web/modules/custom/riverside_pt/js/scroll.js b/web/modules/custom/riverside_pt/js/scroll.js index 59dabb6..9d716d9 100644 --- a/web/modules/custom/riverside_pt/js/scroll.js +++ b/web/modules/custom/riverside_pt/js/scroll.js @@ -1,16 +1,15 @@ import zenscroll from "https://esm.sh/zenscroll@4.0.2"; -var FIXED_BUFFER = 91; // breathing room below fixed header when menu is closed -var MOBILE_BUFFER = 0; // no offset needed when header is in-flow (scrolls away) +var FIXED_BUFFER = 0; // breathing room below fixed header when menu is closed // Returns the effective scroll offset to clear the header. // When the hamburger is open, offsetHeight already includes the expanded nav, // so no extra buffer is needed. When closed, add FIXED_BUFFER for breathing room. function headerOffset() { var header = document.querySelector(".rpt-header"); - if (!header) return MOBILE_BUFFER; + if (!header) return 0; var pos = window.getComputedStyle(header).position; - if (pos !== "fixed" && pos !== "sticky") return MOBILE_BUFFER; + if (pos !== "fixed" && pos !== "sticky") return 0; var nav = document.getElementById("rpt-main-nav"); var menuOpen = nav && nav.classList.contains("is-open"); return header.offsetHeight + (menuOpen ? 0 : FIXED_BUFFER); @@ -24,7 +23,7 @@ document.addEventListener("DOMContentLoaded", function () { if (!target) return; // Defer until layout is stable, then position correctly. requestAnimationFrame(function () { - zenscroll.to(target, 0, headerOffset()); + zenscroll.toY(Math.max(0, target.getBoundingClientRect().top + window.scrollY - headerOffset()), 0); }); }); @@ -34,5 +33,5 @@ document.addEventListener("click", function (e) { var target = document.querySelector(link.dataset.scrollTo); if (!target) return; e.preventDefault(); - zenscroll.to(target, 400, headerOffset()); + zenscroll.toY(Math.max(0, target.getBoundingClientRect().top + window.scrollY - headerOffset()), 400); });