Advertisement
Igor150195

скрипт табов вебфлоу intersection

Aug 16th, 2024
755
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Выполняем функции после загрузки DOM-контента
  2. document.addEventListener('DOMContentLoaded', function() {
  3.     // Функция для обработки кликов по элементам вкладок
  4.     function handleStepTabLinks() {
  5.         // Устанавливаем обработчик клика на элементы вкладок
  6.         $('.step-tabs-menu .step-tab-link').on('click', function(event) {
  7.             // Предотвращаем переход по ссылке
  8.             event.preventDefault();
  9.             let $this = $(this);
  10.             // Здесь можно добавить действия, которые нужно выполнить при клике
  11.         });
  12.     }
  13.  
  14.     // Функция для автоматического переключения вкладок
  15.     function clickStepTabLinks() {
  16.         // Устанавливаем начальный индекс
  17.         var currentIndex = 1;
  18.         // Создаем объект MediaQueryList для отслеживания разрешения экрана
  19.         var mediaQuery = window.matchMedia('(max-width: 991px)');
  20.         var elem = document.querySelector('.hero-search-input');
  21.  
  22.         // Функция для клика по текущему элементу и перехода к следующему
  23.         function clickNext() {
  24.             // Проверяем, отображается ли элемент с классом 'nav-menu-wrap' и совпадает ли с медиа-запросом
  25.             if (mediaQuery.matches && $('.nav-menu-wrap').css('display') === 'block') {
  26.                 // Если разрешение экрана 991px или меньше и 'nav-menu-wrap' отображается, останавливаем выполнение
  27.                 return;
  28.             }
  29.             // Если элемент '.hero-search-input' в фокусе, останавливаем выполнение
  30.             if (elem === document.activeElement) {
  31.                 return;
  32.             }
  33.             // Кликаем по текущему элементу вкладки
  34.             $('.step-tabs-menu .step-tab-link').eq(currentIndex).click();
  35.             // Увеличиваем индекс или сбрасываем его, если он превышает количество элементов
  36.             currentIndex = (currentIndex + 1) % $('.step-tabs-menu .step-tab-link').length;
  37.         }
  38.  
  39.         // Запускаем функцию clickNext с интервалом в 5 секунд
  40.         setInterval(clickNext, 5000);
  41.     }
  42.  
  43.     // Создаем Intersection Observer
  44.     let observer = new IntersectionObserver(function(entries, observer) {
  45.         entries.forEach(function(entry) {
  46.             // Проверяем, является ли элемент видимым
  47.             if (entry.isIntersecting) {
  48.                 // Если блок с классом 'steps' появился в области видимости, запускаем clickStepTabLinks
  49.                 clickStepTabLinks();
  50.                 // Отключаем наблюдатель после запуска функции, чтобы избежать повторных запусков
  51.                 observer.disconnect();
  52.             }
  53.         });
  54.     });
  55.  
  56.     // Наблюдаем за блоком с классом 'steps'
  57.     let stepsElement = document.querySelector('.steps');
  58.     if (stepsElement) {
  59.         observer.observe(stepsElement);
  60.     }
  61.  
  62.     // Вызываем функцию для обработки кликов по вкладкам при загрузке страницы
  63.     handleStepTabLinks();
  64. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement