🎴 Enhance your O'Reilly learning experience: smoothly hide header and footer on scroll down, and show them (with cute transparency!) on scroll up.
// ==UserScript==// @name O'Reilly Helper// @namespace https://github.com/mefengl// @version 0.2.0// @description 🎴 Enhance your O'Reilly learning experience: smoothly hide header and footer on scroll down, and show them (with cute transparency!) on scroll up.// @author mefengl// @match https://learning.oreilly.com/library/view/*// @icon https://www.google.com/s2/favicons?sz=64&domain=oreilly.com// @license MIT// @grant GM_addStyle// ==/UserScript==(function () {'use strict';GM_addStyle(`header, #content-navigation {transition: opacity 0.5s linear;}`);let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;let isScrollingDown = false;let header = document.querySelector('header');let footer = document.querySelector('#content-navigation');if (header) {header.style.opacity = '0.6';header.style.transition = 'opacity 0.5s';}if (footer) {footer.style.opacity = '0';footer.style.transition = 'opacity 0.5s';}window.addEventListener('scroll', function () {let scrollTop = window.pageYOffset || document.documentElement.scrollTop;if (scrollTop > lastScrollTop && !isScrollingDown) {isScrollingDown = true;// On scroll down, hide header and footerif (header) header.style.opacity = '0';if (footer) footer.style.opacity = '0';} else if (scrollTop < lastScrollTop && isScrollingDown) {isScrollingDown = false;// On scroll up, show header and footerif (header) header.style.opacity = '0.6';if (footer) footer.style.opacity = '0.6';}lastScrollTop = scrollTop <= 0 ? 0 : scrollTop; // For mobile}, false);})();