mirror of
https://codeberg.org/Kankys/NewLukasBlog.git
synced 2026-11-11 22:14:36 +01:00
- Sjednoceny všechny relativní cesty na absolutní (od kořene /web/) - Přidáno loading="lazy" pro všechny obrázky pod foldem - Vytvořeny minifikované verze: - web/js/min/shared.min.js (125 → 3 řádky) - web/css/min/shared.min.css - web/css/min/variables.min.css - Přidány dev dependencies: cssnano, terser - Vytvořen minify.js skript pro budoucí minifikaci Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
4 lines
2.2 KiB
JavaScript
4 lines
2.2 KiB
JavaScript
npm notice run npx
|
|
npm notice run 'terser' js/shared.js
|
|
function setupMobileMenu(){const menuIcon=document.querySelector(".menu-icon");const menuList=document.querySelector("nav");const hamburgerIcon=document.querySelector(".fa-solid");if(menuIcon&&hamburgerIcon&&menuList){menuIcon.addEventListener("click",()=>{if(hamburgerIcon.classList.contains("fa-bars")){hamburgerIcon.classList.add("fa-xmark");hamburgerIcon.classList.remove("fa-bars");menuList.style.display="block"}else{hamburgerIcon.classList.add("fa-bars");hamburgerIcon.classList.remove("fa-xmark");menuList.style.display="none"}})}}function scrollToTop(){document.body.scrollTop=0;document.documentElement.scrollTop=0}function setupScrollToTopButton(buttonId="scrollToTopBtn"){const scrollToTopBtn=document.getElementById(buttonId);if(scrollToTopBtn){window.onscroll=function(){if(document.body.scrollTop>20||document.documentElement.scrollTop>20){scrollToTopBtn.style.display="block"}else{scrollToTopBtn.style.display="none"}}}}function setupThemeToggle(config={}){const defaults={toggleButtonId:"toggleButton",storageKey:"themePreference",defaultTheme:"dark"};const options={...defaults,...config};const toggleButton=document.getElementById(options.toggleButtonId);if(!toggleButton)return;const savedTheme=localStorage.getItem(options.storageKey)||options.defaultTheme;let isDarkMode=savedTheme==="dark";if(isDarkMode){document.body.classList.add("dark-theme")}else{document.body.classList.remove("dark-theme")}function toggleTheme(){isDarkMode=!isDarkMode;if(isDarkMode){document.body.classList.add("dark-theme");localStorage.setItem(options.storageKey,"dark")}else{document.body.classList.remove("dark-theme");localStorage.setItem(options.storageKey,"light")}if(options.onToggle){options.onToggle(isDarkMode)}}toggleButton.addEventListener("click",toggleTheme)}function setupImageZoom(selector=".picture",scale=2.2){const images=document.querySelectorAll(selector);images.forEach((img,index)=>{img.addEventListener("mouseenter",()=>{img.style.transform=`scale(${scale})`});img.addEventListener("mouseleave",()=>{img.style.transform="scale(1)"})})}document.addEventListener("DOMContentLoaded",function(){setupMobileMenu();setupScrollToTopButton();setupThemeToggle();setupImageZoom()});
|