| document.addEventListener('DOMContentLoaded', () => { |
| |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| anchor.addEventListener('click', function (e) { |
| e.preventDefault(); |
| |
| const targetId = this.getAttribute('href'); |
| if (targetId === '#') return; |
| |
| const targetElement = document.querySelector(targetId); |
| if (targetElement) { |
| targetElement.scrollIntoView({ |
| behavior: 'smooth', |
| block: 'start' |
| }); |
| } |
| }); |
| }); |
|
|
| |
| const sections = document.querySelectorAll('section'); |
| const observerOptions = { |
| threshold: 0.1, |
| rootMargin: '0px 0px -50px 0px' |
| }; |
|
|
| const observer = new IntersectionObserver((entries, observer) => { |
| entries.forEach(entry => { |
| if (entry.isIntersecting) { |
| entry.target.classList.add('fade-in'); |
| observer.unobserve(entry.target); |
| } |
| }); |
| }, observerOptions); |
|
|
| sections.forEach(section => { |
| observer.observe(section); |
| }); |
|
|
| |
| const contactForm = document.querySelector('#contact form'); |
| if (contactForm) { |
| contactForm.addEventListener('submit', (e) => { |
| e.preventDefault(); |
| |
| alert('Thank you for your message! I will get back to you soon.'); |
| contactForm.reset(); |
| }); |
| } |
| }); |