TGViewer
Логово верстальщика Логово верстальщика @webdevlair · 7.93K subscribers
Post #3862 1.04K
👩‍💻 Модальное окно с закрытием по кнопке и фону

Создайте модальное окно, которое открывается при клике на кнопку и закрывается при клике на кнопку закрытия или на фон вокруг модального окна.

Ожидаемое поведение:

• При клике на кнопку "Открыть модальное окно" появляется модальное окно.
• Модальное окно закрывается при клике на кнопку "Закрыть" или на затемнённый фон.
• Фон страницы не прокручивается, пока открыто модальное окно.

Решение задачи🔽

<button id="openModal">Открыть модальное окно</button>

<div id="modal" class="modal">
<div class="modal-content">
<span id="closeModal" class="close-button">&times;</span>
<p>Это модальное окно</p>
</div>
</div>

body.modal-open {
overflow: hidden;
}

.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
justify-content: center;
align-items: center;
}

.modal-content {
background: white;
padding: 20px;
border-radius: 8px;
position: relative;
}

.close-button {
position: absolute;
top: 10px;
right: 15px;
font-size: 24px;
cursor: pointer;
}

const openModalBtn = document.getElementById('openModal');
const closeModalBtn = document.getElementById('closeModal');
const modal = document.getElementById('modal');
const body = document.body;

openModalBtn.addEventListener('click', () => {
modal.style.display = 'flex';
body.classList.add('modal-open');
});

closeModalBtn.addEventListener('click', closeModal);
modal.addEventListener('click', (e) => {
if (
e.target === modal) closeModal();
});

function closeModal() {
modal.style.display = 'none';
body.classList.remove('modal-open');
}
  • 👍 3
  • 👎 1
More from @webdevlair
  1. Oct 8, 2026Свершилось: в Chrome 155, который выкатили вчера, наконец прикрутили поддержку JPEG XL (.j…
  2. Oct 8, 2026Post #4678
  3. Oct 7, 2026История HTML и CSS: какие элементы и свойства ушли навсегда Люди обожают копаться в прошло…
  4. Oct 7, 2026Post #4676
  5. Oct 7, 2026Выпуск #805 (6 октября 2026) JavaScript Weekly открывается материалом Нолана Лоусона «Why…
  6. Oct 5, 2026Claude теперь работает под надзором — и это, как ни странно, к лучшему Anthropic выпустили…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →