Как сделать модальное окно javascript

Модальное окно – это элемент интерфейса, которой визуально представляет собой «всплывающее окно», отображающееся над остальной частью страницы. При этом показ окна обычно сопровождают затемнением всей другой части страницы. Это действие позволяет визуально отделить его от остального содержимого страницы, а также показать, что в данный момент только оно одно является активным элементом. При этом контент, расположенный под ним, делают недоступным (т.е. пользователь не сможет с ним взаимодействовать пока он не закроет это окно). Вызов модального окна можно привязать к различным событиям на странице, но в большинстве сценариев это осуществляют при нажатии на кнопку или ссылку. Рассмотрим пример.

Исходный HTML файл и стили

<body>
  <button onclick="openModal();">Открыть</button>
  <div class="modal">
    <div class="modal-content">
      <p>Здесь может быть ваша реклама...</p>
      <span onclick="closeModal();">&times</span>
    </div>
  </div>
</body>
/* формируем фон для модального окна */
.modal {
  display: none; /* скрыт по умолчанию */
  /* темный фон при открытии модалки должен быть на всю страницу */
  position: fixed; 
  z-index: 1; /* поверх всех элементов */
  left: 0;
  top: 0;
  width: 100vw; /* полная ширина */
  height: 100vh; /* полная высота */
  background-color: rgba(0,0,0,0.4); /* цвет фона - прозрачный черный */
}

/* само модальное окно с контентом */
.modal-content {
  background-color: #fff;
  /* окно будет находится по центру по горизонтали и с отступом сверху в 100 px */
  margin: 100px auto; 
  padding: 20px;
  width: 50%; 
  font-size: 20px;
  /* разнесем текст и кнопоку по краям окна */
  display: flex;
  justify-content: space-between;
 }

span {
  cursor: pointer;
}

Логика работы проста, нам нужно что бы при нажатии на кнопку "открыть" на странице, менялось свойство display у класса modal с none на block, и обратно, при нажатии на кнопку закрыть в самом окне. Данный код необходимо добавить в раздел <sсript> на странице

const modal = document.getElementsByClassName("modal")[0];
const openModal = () => {
  modal.stylе.displаy = "block";
}
const closeModal = () => {
  modal.stylе.displаy = "none";
}
0 0
Аватар пользователя user-e30d9bb305dc7495
user-e30d9bb305dc7495
10 февраля 2025

Менять в ключевых словах латинские буквы на русские,визуально не отличимые - свинство.

0 0
Познакомьтесь с основами JavaScript бесплатно