MediaWiki:Common.js: различия между версиями

Нет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 33: Строка 33:
});
});


// Автоскролл при открытии выпадающих блоков
// Автоскролл после открытия спойлера в меню Citizen
$(document).ready(function () {
$(document).on('click', '.dropdown .dropbtn', function () {
    // Находим все выпадающие блоки
 
     $('.dropdown .dropbtn').on('click', function () {
     var $dropdown = $(this).closest('.dropdown');
        let parent = $(this).closest('.dropdown');
    var $content = $dropdown.find('.dropdown-content');


        // Переключаем class .active
    // Даем CSS-анимации завершиться, если она есть
        parent.toggleClass('active');
    setTimeout(function () {


         // Если блок открылся — скроллим
         // Если блок теперь виден — скроллим к нему
         if (parent.hasClass('active')) {
         if ($content.is(':visible')) {
             setTimeout(() => {
             var top = $dropdown.offset().top - 80; // отступ сверху (регулируется)
                $('html, body').animate({
            $('html, body').animate({ scrollTop: top }, 300);
                    scrollTop: parent.offset().top - 120 // подстройка под Citizen-header
                }, 400);
            }, 300); // ждём окончания анимации max-height
         }
         }
    });
});
// Автоскролл после открытия спойлера в меню Citizen
$(document).on('click', '.citizen-menu .mw-collapsible-toggle', function () {
    var $menuItem = $(this).closest('.mw-collapsible');
    // Даем анимации Citizen завершиться (200–300 мс)
    setTimeout(function () {
        if ($menuItem.hasClass('mw-collapsed')) return; // Если закрыто — не скроллим


        var top = $menuItem.offset().top - 80; // Немного отступа сверху
     }, 200);
        $('html, body').animate({ scrollTop: top }, 300);
     }, 250);
});
});