/
denbog
/
adaptive-menu
Обзор
Документация
Войти
/
denbog
/
adaptive-menu
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
script.js
49 строк
2 KB
Denis Bogachev
настройка скролла
14 июн 2026, 16:19
14 июн 2026, 16:19
bd99431
Код
Авторство
О чём код?
const CatalogMenu = (function () { let menu = null; let activePane = 0; const isMobile = window.matchMedia('(max-width: 576px)'); function open(index) { if (index === activePane) { if (isMobile.matches) { menu.querySelectorAll('[role="tab"].is-active, [role="tabpanel"].is-active').forEach((el) => el.classList.remove('is-active')); activePane = 0; } return; } menu.querySelectorAll('[role="tab"].is-active, [role="tabpanel"].is-active').forEach((el) => el.classList.remove('is-active')); menu.querySelectorAll('[role="tab"]:nth-of-type(' + index + ')').forEach((el) => el.classList.add('is-active')); menu.querySelector('[role="tabpanel"]:nth-of-type(' + index + ')')?.classList.add('is-active'); activePane = index; } return { init(selector) { menu = document.querySelector(selector); const element = menu.querySelector('.catalog-menu__pane.is-active'); activePane = [...element.parentElement.children].indexOf(element); menu.querySelectorAll('[role="tab"]:nth-of-type(' + activePane + ')').forEach((el) => el.classList.add('is-active')); menu.querySelectorAll('[role="tab"]').forEach(function (tab) { tab.addEventListener('click', function (e) { e.preventDefault(); let index = [...e.currentTarget.parentElement.querySelectorAll('[role="tab"]')].indexOf(e.currentTarget); open(index + 1); }); }); }, open(index) { open(index); } }; })(); document.addEventListener('DOMContentLoaded', () => CatalogMenu.init('.catalog-menu'));