/** * Flex Travel - Egyedi JavaScript * Scroll progress bar, menü animációk, mobil menü kezelés */ (function($) { 'use strict'; $(document).ready(function() { // ============================================ // SCROLL PROGRESS BAR // ============================================ // Progress bar elem létrehozása const progressBar = $('
'); $('body').append(progressBar); function updateScrollProgress() { const winScroll = $(window).scrollTop(); const height = $(document).height() - $(window).height(); const scrolled = (winScroll / height) * 100; progressBar.css('width', scrolled + '%'); } $(window).on('scroll', updateScrollProgress); $(window).on('resize', updateScrollProgress); updateScrollProgress(); // ============================================ // NAVBAR SCROLL EFFECT // ============================================ const navbar = $('.main-navbar'); function updateNavbarScroll() { if ($(window).scrollTop() > 50) { navbar.addClass('navbar-scrolled'); } else { navbar.removeClass('navbar-scrolled'); } } $(window).on('scroll', updateNavbarScroll); updateNavbarScroll(); // ============================================ // MOBILE MENU TOGGLE ANIMATION // ============================================ const menuToggle = $('.menu-toggle, .navbar-toggle'); menuToggle.on('click', function() { $(this).toggleClass('active'); }); // ============================================ // DROPDOWN MENU MOBILE OPTIMIZATION // ============================================ // Mobil nézetben a dropdown menük kezelése if ($(window).width() <= 991) { $('.main-navigation .menu-item-has-children > a').on('click', function(e) { e.preventDefault(); const parent = $(this).parent('.menu-item-has-children'); const dropdown = parent.find('.dropdown-menu'); // Bezárja a többi nyitott dropdownot $('.main-navigation .menu-item-has-children').not(parent).removeClass('open'); $('.main-navigation .dropdown-menu').not(dropdown).slideUp(300); // Toggle jelenlegi dropdown parent.toggleClass('open'); dropdown.slideToggle(300); }); } // ============================================ // MOBIL MENÜ BEZÁRÁSA LINK KATTINTÁSRA // ============================================ // Mobil menü bezárása linkre kattintás után if ($(window).width() <= 991) { $('#primary-menu .nav-link').on('click', function() { const mobileMenu = $('#primary-menu'); const toggleButton = $('.menu-toggle, .navbar-toggle'); if (mobileMenu.is(':visible')) { mobileMenu.slideUp(300); toggleButton.removeClass('active'); } }); } // ============================================ // ABLAK ÁTMÉRETEZÉS KORREKCIÓ // ============================================ $(window).on('resize', function() { if ($(window).width() > 991) { // Asztali nézetben állítsuk vissza a dropdownokat $('.dropdown-menu').removeAttr('style'); $('.menu-item-has-children').removeClass('open'); } }); // ============================================ // PERFORMANCE OPTIMIZATION - Throttle // ============================================ let ticking = false; $(window).on('scroll', function() { if (!ticking) { requestAnimationFrame(function() { updateScrollProgress(); updateNavbarScroll(); ticking = false; }); ticking = true; } }); }); })(jQuery);