Решение 1 : Вы можете объявить .modal{ overflow-y:auto}
или .modal-open .modal{ overflow-y:auto}
, если вы используете загрузочную версию ниже 3 В (для более высоких версий она уже объявлена).
Bootstrap добавляет modal-open
class до body
для удаления полос прокрутки в случае, если отображается модальный, но не добавляет к html
какой-либо класс, который также может иметь полосы прокрутки, в результате полоса прокрутки html
иногда может быть также видимой, чтобы удалитьэто вы должны установить модальные показать / скрыть события и добавить / удалить overflow:hidden
на html
.Вот как это сделать.
$('.modal').on('hidden.bs.modal', function () {
$('html').css('overflow','auto');
}).on('shown.bs.modal', function () {
$('html').css('overflow','hidden');
});
Решение 2 : Поскольку модальные клавиши имеют функциональные клавиши, лучший способ справиться с этим - зафиксировать высоту или даже лучше соединить высотумодальной с высотой окна просмотра, как это -
.modal-body {
overflow:auto;
max-height: 65vh;
}
При этом методе вам также не нужно обрабатывать полосы прокрутки body
и html
.
Примечание 1 : Браузер поддерживает для vh
единиц.
Примечание 2 : Как предлагается выше .Если вы измените .modal{position:fixed}
на .modal{position:absolute}
, но если страница будет иметь высоту, превышающую модальную, пользователь сможет прокрутить слишком много вверх, и модальная область исчезнет из области просмотра, это не очень удобно для пользователя.