File manager - Edit - /home/webapp69.cm.in.th/u69319090026/portfolio/script.js
Back
// Mobile Menu Toggle const hamburger = document.getElementById('hamburger'); const navLinks = document.getElementById('nav-links'); const navItems = document.querySelectorAll('.nav-item'); const hamburgerIcon = hamburger.querySelector('i'); function toggleMenu() { navLinks.classList.toggle('active'); // Change icon between list and x if (navLinks.classList.contains('active')) { hamburgerIcon.classList.remove('ph-list'); hamburgerIcon.classList.add('ph-x'); } else { hamburgerIcon.classList.remove('ph-x'); hamburgerIcon.classList.add('ph-list'); } } hamburger.addEventListener('click', toggleMenu); // Close mobile menu when clicking a link navItems.forEach(item => { item.addEventListener('click', () => { if (navLinks.classList.contains('active')) { toggleMenu(); } }); }); // Navbar background on scroll const navbar = document.getElementById('navbar'); window.addEventListener('scroll', () => { if (window.scrollY > 50) { navbar.classList.add('scrolled'); } else { navbar.classList.remove('scrolled'); } }); // Active link highlighting on scroll const sections = document.querySelectorAll('section'); window.addEventListener('scroll', () => { let current = ''; sections.forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (scrollY >= (sectionTop - 200)) { current = section.getAttribute('id'); } }); navItems.forEach(item => { item.classList.remove('active'); if (item.getAttribute('href') === `#${current}`) { item.classList.add('active'); } }); }); // Intersection Observer for Scroll Animations (Fade-in) const faders = document.querySelectorAll('.fade-in'); const appearOptions = { threshold: 0.15, rootMargin: "0px 0px -50px 0px" }; const appearOnScroll = new IntersectionObserver(function( entries, appearOnScroll ) { entries.forEach(entry => { if (!entry.isIntersecting) { return; } else { entry.target.classList.add('appear'); appearOnScroll.unobserve(entry.target); } }); }, appearOptions); faders.forEach(fader => { appearOnScroll.observe(fader); }); // Prevent form submission redirect for demo const form = document.querySelector('.contact-form'); if (form) { form.addEventListener('submit', (e) => { e.preventDefault(); const btn = form.querySelector('button[type="submit"]'); const originalText = btn.innerHTML; btn.innerHTML = 'ส่งข้อความสำเร็จแล้ว! <i class="ph ph-check-circle"></i>'; btn.style.backgroundColor = '#10b981'; // Success green setTimeout(() => { btn.innerHTML = originalText; btn.style.backgroundColor = ''; // Reset to default CSS form.reset(); }, 3000); }); }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.27 |
proxy
|
phpinfo
|
Settings