MediaWiki:Common.js: различия между версиями
Страница интерфейса MediaWiki
Дополнительные действия
Askell (обсуждение | вклад) Нет описания правки |
Askell (обсуждение | вклад) Нет описания правки |
||
| Строка 34: | Строка 34: | ||
// Автоскролл при открытии выпадающих блоков | // Автоскролл при открытии выпадающих блоков | ||
document.addEventListener("DOMContentLoaded", function () { | |||
const dropdowns = document.querySelectorAll(".dropdown"); | |||
dropdowns.forEach(dropdown => { | |||
const btn = dropdown.querySelector(".dropbtn"); | |||
// | btn.addEventListener("click", function () { | ||
// закрываем другие спойлеры | |||
dropdowns.forEach(d => { | |||
if (d !== dropdown) d.classList.remove("active"); | |||
}); | |||
} | // переключаем текущий | ||
dropdown.classList.toggle("active"); | |||
// если открыт — скроллим к нему | |||
if (dropdown.classList.contains("active")) { | |||
setTimeout(() => { | |||
dropdown.scrollIntoView({ | |||
behavior: "smooth", | |||
block: "start" | |||
}); | |||
}, 150); // ждем пока CSS-анимация начнёт увеличивать высоту | |||
} | |||
}); | |||
}); | }); | ||
}); | }); | ||
Версия от 21:22, 2 декабря 2025
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
mw.loader.using('mediawiki.util').then(function() {
var isMobile = mw.config.get('skin') === 'minerva';
if (isMobile) {
// Мобильная версия
$('.mobile-hide').hide();
} else {
// Десктопная версия
$('.desktop-hide').hide();
}
});
mw.hook('wikipage.content').add(function($content) {
$content.find('.dropbtn').on('click', function(event) {
event.preventDefault();
var dropdown = $(this).closest('.dropdown');
var content = dropdown.find('.dropdown-content');
// Закрываем все открытые списки
$('.dropdown').not(dropdown).removeClass('active').find('.dropdown-content').css('max-height', '0px');
// Открываем/закрываем текущий список
if (dropdown.hasClass('active')) {
dropdown.removeClass('active');
content.css('max-height', '0px');
} else {
dropdown.addClass('active');
content.css('max-height', content[0].scrollHeight + 'px'); // Автоматическая высота
}
});
});
// Автоскролл при открытии выпадающих блоков
document.addEventListener("DOMContentLoaded", function () {
const dropdowns = document.querySelectorAll(".dropdown");
dropdowns.forEach(dropdown => {
const btn = dropdown.querySelector(".dropbtn");
btn.addEventListener("click", function () {
// закрываем другие спойлеры
dropdowns.forEach(d => {
if (d !== dropdown) d.classList.remove("active");
});
// переключаем текущий
dropdown.classList.toggle("active");
// если открыт — скроллим к нему
if (dropdown.classList.contains("active")) {
setTimeout(() => {
dropdown.scrollIntoView({
behavior: "smooth",
block: "start"
});
}, 150); // ждем пока CSS-анимация начнёт увеличивать высоту
}
});
});
});