VincentOostelbos

Commons.js

Nov 18th, 2025
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;(function() {
  2.     'use strict';
  3.  
  4.     document.addEventListener('DOMContentLoaded', function() {
  5.  
  6.         // --- 1. Get Element References ---
  7.         let prevScrollPos = window.scrollY || window.pageYOffset;
  8.         const header = document.getElementById("mainHeader");
  9.         const toc = document.getElementById("toc");
  10.  
  11.         // Exit if the main header is not found
  12.         if (!header) {
  13.             return;
  14.         }
  15.  
  16.         const headerHeight = header.offsetHeight;
  17.  
  18.         // --- 2. Scroll Event Listener ---
  19.         window.onscroll = function() {
  20.             const currentScrollPos = window.scrollY || window.pageYOffset;
  21.  
  22.             // =======================================================
  23.             // A. Main Header Hide/Show Logic
  24.             // =======================================================
  25.  
  26.             // Scrolling UP - Show the header
  27.             if (prevScrollPos > currentScrollPos) {
  28.                 header.classList.remove("header-hidden");
  29.             }
  30.             // Scrolling DOWN AND past the header height - Hide the header
  31.             else if (currentScrollPos > headerHeight) {
  32.                 header.classList.add("header-hidden");
  33.             }
  34.  
  35.             // =======================================================
  36.             // B. Dynamic TOC Scroll Logic
  37.             // =======================================================
  38.  
  39.             // Check if the TOC element was found
  40.             if (toc) {
  41.                 // Damping Factor: Controls the speed (5 is a good balance)
  42.                 const dampingFactor = 5;
  43.                 const scrollOffset = currentScrollPos / dampingFactor;
  44.  
  45.                 toc.style.transform = `translateY(-${scrollOffset}px)`;
  46.             }
  47.  
  48.             // =======================================================
  49.             // C. Update Position
  50.             // =======================================================
  51.  
  52.             prevScrollPos = currentScrollPos;
  53.         };
  54.     });
  55. })();
  56.  
Advertisement
Add Comment
Please, Sign In to add comment