| |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| anchor.addEventListener('click', function (e) { |
| e.preventDefault(); |
| document.querySelector(this.getAttribute('href')).scrollIntoView({ |
| behavior: 'smooth' |
| }); |
| }); |
| }); |
|
|
| |
| document.addEventListener("DOMContentLoaded", function() { |
| const lazyImages = [].slice.call(document.querySelectorAll("img.lazy")); |
| |
| if ("IntersectionObserver" in window) { |
| let lazyImageObserver = new IntersectionObserver(function(entries, observer) { |
| entries.forEach(function(entry) { |
| if (entry.isIntersecting) { |
| let lazyImage = entry.target; |
| lazyImage.src = lazyImage.dataset.src; |
| lazyImage.classList.remove("lazy"); |
| lazyImageObserver.unobserve(lazyImage); |
| } |
| }); |
| }); |
|
|
| lazyImages.forEach(function(lazyImage) { |
| lazyImageObserver.observe(lazyImage); |
| }); |
| } |
| }); |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| const mobileMenuButton = document.getElementById('mobile-menu-button'); |
| const mobileMenu = document.getElementById('mobile-menu'); |
| |
| if (mobileMenuButton && mobileMenu) { |
| mobileMenuButton.addEventListener('click', function() { |
| mobileMenu.classList.toggle('hidden'); |
| }); |
| } |
|
|
| |
| const navbar = document.querySelector('custom-navbar').shadowRoot.querySelector('nav'); |
| window.addEventListener('scroll', function() { |
| if (window.scrollY > 50) { |
| navbar.classList.add('scrolled'); |
| } else { |
| navbar.classList.remove('scrolled'); |
| } |
| }); |
| }); |
|
|