@@ -57,7 +57,7 @@ const shouldRenderSidebar = hasSidebar && !is404Page;
5757 visibility: var(--sl-sidebar-visibility, hidden);
5858 position: fixed;
5959 z-index: var(--sl-z-index-menu);
60- inset-block: var(--sl-nav-height) 0 ;
60+ inset-block: var(--sl-nav-height) var(--cc-footer-overlap, 0px) ;
6161 inset-inline-start: 0;
6262 width: 100%;
6363 background-color: var(--sl-color-black);
@@ -195,11 +195,33 @@ const shouldRenderSidebar = hasSidebar && !is404Page;
195195 });
196196 }
197197
198+ let footerOverlapRaf = 0;
199+ function updateFooterOverlap() {
200+ footerOverlapRaf = 0;
201+ const footer = document.querySelector('.cc-footer');
202+ if (!footer) {
203+ document.documentElement.style.setProperty('--cc-footer-overlap', '0px');
204+ return;
205+ }
206+ const rect = footer.getBoundingClientRect();
207+ const overlap = Math.max(0, window.innerHeight - rect.top);
208+ document.documentElement.style.setProperty('--cc-footer-overlap', overlap + 'px');
209+ }
210+ function scheduleFooterOverlap() {
211+ if (footerOverlapRaf) return;
212+ footerOverlapRaf = requestAnimationFrame(updateFooterOverlap);
213+ }
214+
198215 function setup() {
199216 header = document.querySelector('#site-header');
200217
201218 wrapTablesForScroll();
202219 tagHeaderlessTables();
220+ updateFooterOverlap();
221+ window.removeEventListener('scroll', scheduleFooterOverlap);
222+ window.removeEventListener('resize', scheduleFooterOverlap);
223+ window.addEventListener('scroll', scheduleFooterOverlap, { passive: true });
224+ window.addEventListener('resize', scheduleFooterOverlap);
203225
204226 if (!header) return;
205227
0 commit comments