2014-11-07 2 views
19

Я перехожу от Bootstrap 2 к Bootstrap 3. В старой версии я использовал модалы с длинным контентом, и модалы автоматически прокручивались при достижении заданной максимальной высоты.Щебет Bootstrap 3 Модальный с прокручиваемым телом

В Bootstrap 3 модальный просто расширяется, чтобы показать весь контент, и я должен использовать кнопку вниз страницы, чтобы на самом деле добраться до конца и увидеть кнопки в модальном нижнем колонтитуле. Я не могу использовать полосу прокрутки в крайнем правом углу окна браузера, потому что она покрыта фоном, и в любом случае не будет интуитивно прокручивать только содержимое в модальном поле.

Как добиться модальности в бутстрапе 3, который автоматически вставляет полосу прокрутки для прокрутки содержимого при достижении максимальной высоты?

Я попытался установить максимальную высоту модального класса, как это:

.modal{ 
    max-height:80%; 
} 
.modal-header{ 
    height:15% !important;  
} 
.modal-body{ 
    height:70%; 
    overflow:auto; 
} 
.modal-footer{ 
    height:15%; 
} 

Но это не работает, как ожидалось. Модальное окно достигает максимального размера, но оно просто сокращает его содержимое, а нижний колонтитул даже не отображается.

Спасибо за любую помощь.

+0

Я обновил свой ответ. – Sebsemillia

ответ

60

Просто добавьте:

.modal-content { 
    height:250px; 
    overflow:auto; 
} 

Высота, конечно, может быть адаптирован к вашим личным потребностям.

Working Example

Update:

Это на самом деле довольно легко. Просто добавьте:

.modal-body { 
    max-height: calc(100vh - 212px); 
    overflow-y: auto; 
} 

к вашим css.

Он использует vh и calc, которые также имеют хорошую поддержку браузера (IE9 +).

Основано на этом answer. Пожалуйста, прочтите там более подробную информацию, я не буду копировать его ответ.

Working Example

+0

Спасибо, что ответили. Я попробовал. Он также прокручивает верхний и нижний колонтитулы модальности, я хочу, чтобы верхний и нижний колонтитулы модального вида оставались видимыми во все времена, как это было в bootstrap 2, и только прокручивали содержимое внутри. Это также вызывает проблемы с модалами, у которых меньше контента, так как модальность все еще отображается на фиксированной высоте с белым пространством внизу. – Vero

+0

Я посмотрю. – Sebsemillia

+0

Спасибо! Это отлично поработало. Я использовал только код из обновления, и я добавил overflow-x: hidden; чтобы избежать горизонтальной полосы прокрутки во всплывающем окне. – Vero

2

Если у вас есть динамический контент, это может быть болью. Я использовал это, чтобы убедиться, что он имеет правильную высоту, а затем прокручивал:

$('#modal').on('shown.bs.modal', function() { 
    $('.modal-dialog').css('height', $('.modal-dialog').height()); 
}); 

$('#modal').on('hidden.bs.modal', function() { 
    $('.modal-dialog').css('height', 'auto'); 
}); 
+0

Это условие, которое я пытался решить. Благодаря! – ScottLenart

Смежные вопросы