Как изменить размер Twitter-бутстрапа в динамическом режиме на основе контента
У меня есть контент базы данных, который имеет разные типы данных, такие как видео Youtube, видео Vimeo, текст, изображения Imgur и т.д. Все они имеют разную высоту и ширину. Все, что я нашел при поиске в Интернете, меняет размер только на один параметр. Он должен быть таким же, как и содержимое всплывающего окна.
Это мой HTML-код. Я также использую Ajax для вызова содержимого.
<div id="modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="ModalLabel"></h3>
</div>
<div class="modal-body">
</div>
</div>
Ответы
Ответ 1
Поскольку ваш контент должен быть динамическим, вы можете быстро установить свойства css модальности в событии show
модальности, которое изменит размер модальности, переопределяя его спецификации по умолчанию. Причина бутстрапа применяет максимальную высоту к модальному телу с помощью правила css, как показано ниже:
.modal-body {
position: relative;
overflow-y: auto;
max-height: 400px;
padding: 15px;
}
Таким образом, вы можете добавлять встроенные стили динамически с помощью метода jquery css
:
Для более новых версий загрузки используйте show.bs.modal
$('#modal').on('show.bs.modal', function () {
$(this).find('.modal-body').css({
width:'auto', //probably not needed
height:'auto', //probably not needed
'max-height':'100%'
});
});
Для более старых версий загрузки используйте show
$('#modal').on('show', function () {
$(this).find('.modal-body').css({
width:'auto', //probably not needed
height:'auto', //probably not needed
'max-height':'100%'
});
});
или используйте правило css для переопределения:
.autoModal.modal .modal-body{
max-height: 100%;
}
и добавьте этот класс autoModal
к вашим целевым модалам.
Измените содержимое динамически в скрипте, вы увидите, что модальное изменение размера будет соответствующим образом изменено. Демо
Более новая версия бутстрапа увидит доступную event names
.
- show.bs.modal Это событие срабатывает сразу же после вызова метода show instance. Если вызвано щелчком, элемент clicked доступен как свойство relatedTarget события.
- показано .bs.modal Это событие запускается, когда модальное изображение становится видимым для пользователя (будет ждать завершения CSS-переходов). Если вызвано щелчком, элемент clicked доступен как свойство relatedTarget события.
- hide.bs.modal Это событие запускается сразу же после вызова метода экземпляра hide.
- hidden.bs.modal. Это событие запускается, когда модальное завершение скрывается от пользователя (будет ждать завершения CSS-переходов).
- loaded.bs.modal Это событие запускается, когда модаль загружает контент с помощью удаленного параметра.
Поддерживается старая версия загрузочного модальных событий.
- Показать. Это событие срабатывает сразу же после вызова метода show instance.
- показано. Это событие запускается, когда модальное изображение становится видимым для пользователя (будет ждать завершения css-переходов).
- скрыть. Это событие запускается сразу же после вызова метода экземпляра hide.
- скрытый. Это событие запускается, когда модальное завершение скрывается от пользователя (будет ждать завершения css-переходов).
Ответ 2
Это сработало для меня, ничего из этого не было.
.modal-dialog{
position: relative;
display: table; /* This is important */
overflow-y: auto;
overflow-x: auto;
width: auto;
min-width: 300px;
}
Ответ 3
Я не мог получить ответ PSL для меня, поэтому я нашел все, что мне нужно сделать, это установить div, содержащий модальный контент с помощью style="display: table;"
. Сам модальный контент говорит, насколько он хочет быть, и модальный вмещает его.
Ответ 4
для бутстрапа 3 используйте как
$('#myModal').on('hidden.bs.modal', function () {
// do something…
})
Ответ 5
Существует много способов сделать это, если вы хотите написать css и добавить следующий
.modal-dialog{
display: table
}
Если вы хотите добавить встроенный
<div class="modal-dialog" style="display:table;">
//enter code here
</div>
Не добавляйте display:table;
в класс модального контента. это сделало вашу работу, но выложите свой модальный размер для большого размера, следуя скриншотам.
Первое изображение - если вы добавляете стиль в модальный диалог
если вы добавите стиль в модальный контент. он выглядит условно.
![введите описание изображения здесь]()
Ответ 6
Простые Css работают для меня
.modal-dialog {
max-width : 100% ;
}
Ответ 7
Это можно сделать, если вы используете плагин jquery dialog из gijgo.com и задаете ширину для автоматического.
$("#dialog").dialog({
uiLibrary: 'bootstrap',
width: 'auto'
});
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<link href="http://code.gijgo.com/1.0.0/css/gijgo.css" rel="stylesheet" type="text/css">
<script src="http://code.gijgo.com/1.0.0/js/gijgo.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="dialog" title="Wikipedia">
<img src="https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/1122px-Wikipedia-logo-v2.svg.png" width="320"/>
</div>
</body>
</html>
Ответ 8
Я просто переопределить CSS:
.modal-dialog {
max-width: 1000px;
}
Ответ 9
Для Bootstrap 2 Автоматическая настройка высоты модели динамически
//Auto adjust modal height on open
$('#modal').on('shown',function(){
var offset = 0;
$(this).find('.modal-body').attr('style','max-height:'+($(window).height()-offset)+'px !important;');
});
Ответ 10
У меня была та же проблема с bootstrap 3 и высотой div div модального тела, которая не была бы больше, чем 442px. Это все, что нужно css, чтобы исправить это в моем случае:
.modal-body {
overflow-y: auto;
}
Ответ 11
Мое решение было просто добавить ниже стиль. <div class="modal-body" style="clear: both;overflow: hidden;">
Ответ 12
Простое решение CSS, которое будет вертикально и горизонтально центрировать мод:
.modal.show {
display: flex !important;
justify-content: center;
}
.modal-dialog {
align-self: center;
}
Ответ 13
set width:fit-content
для модального div.
Ответ 14
Начиная с Bootstrap 4 - он имеет стиль:
@media (min-width: 576px)
.modal-dialog {
max-width: 500px;
}
так что если вы хотите изменить модальную ширину до некоторой ширины, я бы предложил использовать это в вашей CSS, например:
.modal-dialog { max-width: 87vw; }
Обратите внимание, что width: 87vw;
установки width: 87vw;
не будет переопределять начальную загрузку max-width: 500px;
,