94 lines
3.2 KiB
JavaScript
94 lines
3.2 KiB
JavaScript
// Mobile Menu Script
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
console.log('Mobile menu script loaded'); // Для отладки
|
|
|
|
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
|
|
const mobileMenuClose = document.getElementById('mobileMenuClose');
|
|
const mobileMenuOverlay = document.getElementById('mobileMenuOverlay');
|
|
const mobileMenu = document.getElementById('mobileMenu');
|
|
const mobileThemeToggle = document.getElementById('mobile-theme-toggle');
|
|
const mainThemeToggle = document.getElementById('theme-toggle');
|
|
|
|
// Проверяем, что элементы существуют
|
|
if (!mobileMenuBtn || !mobileMenu) {
|
|
console.error('Mobile menu elements not found');
|
|
return;
|
|
}
|
|
|
|
console.log('Mobile menu elements found:', {
|
|
mobileMenuBtn,
|
|
mobileMenuClose,
|
|
mobileMenuOverlay,
|
|
mobileMenu,
|
|
mobileThemeToggle,
|
|
mainThemeToggle
|
|
});
|
|
|
|
// Открытие мобильного меню
|
|
mobileMenuBtn.addEventListener('click', function() {
|
|
console.log('Opening mobile menu');
|
|
mobileMenu.classList.add('active');
|
|
mobileMenuOverlay.style.display = 'block';
|
|
document.body.style.overflow = 'hidden';
|
|
});
|
|
|
|
// Закрытие мобильного меню
|
|
function closeMobileMenu() {
|
|
console.log('Closing mobile menu');
|
|
mobileMenu.classList.remove('active');
|
|
mobileMenuOverlay.style.display = 'none';
|
|
document.body.style.overflow = '';
|
|
}
|
|
|
|
if (mobileMenuClose) {
|
|
mobileMenuClose.addEventListener('click', closeMobileMenu);
|
|
}
|
|
|
|
if (mobileMenuOverlay) {
|
|
mobileMenuOverlay.addEventListener('click', closeMobileMenu);
|
|
}
|
|
|
|
// Закрытие меню при клике на ссылку
|
|
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
|
|
mobileNavLinks.forEach(link => {
|
|
link.addEventListener('click', closeMobileMenu);
|
|
});
|
|
|
|
// Синхронизация переключателей темы
|
|
function syncThemeToggles() {
|
|
if (mobileThemeToggle && mainThemeToggle) {
|
|
mobileThemeToggle.checked = mainThemeToggle.checked;
|
|
}
|
|
}
|
|
|
|
if (mainThemeToggle) {
|
|
mainThemeToggle.addEventListener('change', function() {
|
|
console.log('Main theme toggle changed:', this.checked);
|
|
syncThemeToggles();
|
|
});
|
|
}
|
|
|
|
if (mobileThemeToggle) {
|
|
mobileThemeToggle.addEventListener('change', function() {
|
|
console.log('Mobile theme toggle changed:', this.checked);
|
|
if (mainThemeToggle) {
|
|
mainThemeToggle.checked = this.checked;
|
|
// Триггерим событие change
|
|
const event = new Event('change');
|
|
mainThemeToggle.dispatchEvent(event);
|
|
}
|
|
});
|
|
}
|
|
|
|
// Инициализация синхронизации
|
|
syncThemeToggles();
|
|
|
|
// Закрытие меню по ESC
|
|
document.addEventListener('keydown', function(event) {
|
|
if (event.key === 'Escape') {
|
|
closeMobileMenu();
|
|
}
|
|
});
|
|
|
|
console.log('Mobile menu script initialized successfully');
|
|
}); |