Как сделать, чтобы скроллилось только модальное окно?

Ссылка скопирована
22 марта 2026 1 ответ

Есть модальное окно:

.modal {     display: flex;     flex-direction: column;     position: fixed;     top: 0;     left: 0;     width: 100vw;     min-height: 100vh;     z-index: 2;     opacity: 0;     visibility: hidden; }  .modal.active {     opacity: 1;     visibility: visible; }

.modal { display: flex; flex-direction: column; position: fixed; top: 0; left: 0; width: 100vw; min-height: 100vh; z-index: 2; opacity: 0; visibility: hidden; } .modal.active { opacity: 1; visibility: visible; }

При его открытии, на body вешается класс lock

body.lock {     overflow-y: hidden; }

body.lock { overflow-y: hidden; }

Скролл у body убирается, но нет скролла и у модального окна, хотя его границы выходят за пределы экрана. Можно ли как-то исправить?

Дополнительно:

а чем вариант с установкой overflow: auto для .modal и заменой min-height на обычный height там же не устроил?

  • IvanU7n, а не устроил он меня, потому что я о нем не знал. Вот теперь знаю, и он меня устраивает. Спасибо
  • Ответы:

    <div class="modal">   <div class="modal-content">     <!-- Содержимое модального окна -->   </div> </div>

    <div class="modal"> <div class="modal-content"> <!-- Содержимое модального окна --> </div> </div>

    • body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 0;
      }

      .modal {
      display: none;
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5); /* Полупрозрачный фон для модального окна */
      z-index: 2;
      overflow-y: hidden; /* Запретить скроллирование body */
      }

      .modal::before {
      content: "";
      height: 100%;
      width: 100%;
      position: fixed;
      }

      .modal-content {
      background-color: #fff;
      margin: 10% auto;
      padding: 20px;
      border: 1px solid #888;
      width: 80%;
      max-width: 400px;
      box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
      }

      /* Отобразить модальное окно, когда у него есть класс "active" */
      .modal.active {
      display: block;
      }

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для того чтобы сделать так, чтобы скроллилось только модальное окно, вам нужно использовать CSS. Вам нужно установить фиксированную высоту для модального окна и добавить свойство overflow: auto в CSS для модального окна.

    Пример кода на PHP:

    .modal {
      height: 400px; /* устанавливаем фиксированную высоту модального окна */
      overflow: auto; /* добавляем скролл, если контент не помещается в высоту модального окна */
    }

    .modal { height: 400px; /* устанавливаем фиксированную высоту модального окна */ overflow: auto; /* добавляем скролл, если контент не помещается в высоту модального окна */ }

    Таким образом, при превышении высоты модального окна контент будет автоматически прокручиваться с помощью полос прокрутки, и скролл будет применяться только к модальному окну, не затрагивая другие элементы на странице.

    Надеюсь, это поможет вам решить вашу проблему с прокруткой модального окна. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно