document.addEventListener('DOMContentLoaded', () => {
// 1. Находим все кнопки открытия
const openButtons = document.querySelectorAll('[data-modal-target]');
// 2. Находим все кнопки закрытия (внутри модалок)
const closeButtons = document.querySelectorAll('.close-btn');
// Функция открытия
const openModal = (modal) => {
if (!modal) return;
modal.classList.add('open');
document.body.style.overflow = 'hidden'; // Отключаем скролл сайта
};
// Функция закрытия
const closeModal = (modal) => {
modal.classList.remove('open');
document.body.style.overflow = ''; // Возвращаем скролл
};
// Слушатель на кнопки открытия
openButtons.forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const targetId = btn.getAttribute('data-modal-target');
const modal = document.querySelector(targetId);
openModal(modal);
});
});
// Слушатель на кнопки закрытия
closeButtons.forEach(btn => {
btn.addEventListener('click', () => {
const modal = btn.closest('.modal');
closeModal(modal);
});
});
// Закрытие по клику на фон (overlay)
window.addEventListener('click', (e) => {
if (e.target.classList.contains('modal')) {
closeModal(e.target);
}
});
// Закрытие по кнопке Escape
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
const openModalElement = document.querySelector('.modal.open');
if (openModalElement) closeModal(openModalElement);
}
});
});