Как я могу изменить ширину по умолчанию для модального окна Twitter Bootstrap?
Я попробовал следующее:
<div class="modal hide fade modal-admin" id="testModal" style="display: none;">
<div class="modal-header">
<a data-dismiss="modal" class="close">×</a>
<h3 id='dialog-heading'></h3>
</div>
<div class="modal-body">
<div id="dialog-data"></div>
</div>
<div class="modal-footer">
<a data-dismiss="modal" class="btn" >Close</a>
<a class="btn btn-primary" id="btnSaveChanges">Save changes</a>
</div>
</div>
И этот Javascript:
$('.modal-admin').css('width', '750px');
$('.modal-admin').css('margin', '100px auto 100px auto');
$('.modal-admin').modal('show')
Результат не тот, который я ожидал. Модальный верхний левый расположен в центре экрана.
Может кто-нибудь мне помочь. Кто-нибудь еще это пробовал. Я предполагаю, что это не необычная вещь, которую нужно делать.
Ответы
Ответ 1
UPDATE:
В bootstrap 3
вам необходимо изменить модальный диалог.
Поэтому в этом случае вы можете добавить класс modal-admin
в место, где стоит modal-dialog
.
Оригинальный ответ (Bootstrap < 3)
Есть ли определенная причина, по которой вы пытаетесь изменить ее с помощью JS/jQuery?
Вы можете легко сделать это только с помощью CSS, а это значит, что вам не нужно делать свой стиль в документе.
В своем собственном CSS файле вы добавляете:
body .modal {
/* new custom width */
width: 560px;
/* must be half of the width, minus scrollbar on the left (30px) */
margin-left: -280px;
}
В вашем случае:
body .modal-admin {
/* new custom width */
width: 750px;
/* must be half of the width, minus scrollbar on the left (30px) */
margin-left: -375px;
}
Я поместил тело перед селектором так, чтобы он занимал более высокий приоритет, чем значение по умолчанию. Таким образом вы можете добавить его в собственный CSS файл и не беспокоиться об обновлении Bootstrap.
Ответ 2
Если вы хотите сделать его отзывчивым только с помощью CSS, используйте это:
.modal.large {
width: 80%; /* respsonsive width */
margin-left:-40%; /* width/2) */
}
Примечание 1: Я использовал класс .large
, вы также можете сделать это в обычном .modal
Примечание 2: В Bootstrap 3 отрицательный левый край может больше не понадобиться (не подтвержден лично)
/*Bootstrap 3*/
.modal.large {
width: 80%;
}
Примечание 3: В Bootstrap 3 и 4 существует класс modal-lg
. Так что этого может быть достаточно, но если вы хотите сделать его отзывчивым, вам все равно понадобится исправление, которое я предоставил для Bootstrap 3.
В некотором приложении используются модальные модальности fixed
, в этом случае вы можете попробовать width:80%; left:10%;
(формула: left = 100 - width/2)
Ответ 3
Если вы используете Bootstrap 3, вам нужно изменить модальный диалог div, а не модальный div, как показано в принятом ответе. Кроме того, чтобы сохранить отзывчивый характер Bootstrap 3, важно написать переопределяющий CSS с помощью медиа-запроса, чтобы модальная форма была полной шириной на более мелких устройствах.
Смотрите этот JSFiddle, чтобы экспериментировать с разной шириной.
HTML
<div class="modal fade">
<div class="modal-dialog custom-class">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 class="modal-header-text">Text</h3>
</div>
<div class="modal-body">
This is some text.
</div>
<div class="modal-footer">
This is some text.
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
CSS
@media screen and (min-width: 768px) {
.custom-class {
width: 70%; /* either % (e.g. 60%) or px (400px) */
}
}
Ответ 4
Если вы хотите что-то, что не нарушает относительный дизайн, попробуйте следующее:
body .modal {
width: 90%; /* desired relative width */
left: 5%; /* (100%-width)/2 */
/* place center */
margin-left:auto;
margin-right:auto;
}
Как говорит @Marco Johannesen, "тело" перед селектором так, что оно принимает более высокий приоритет, чем значение по умолчанию.
Ответ 5
В Bootstrap 3+ наиболее подходящим способом изменения размера модального диалога является использование свойства size. Ниже приведен пример, обратите внимание на modal-sm
по классу modal-dialog
, указав небольшой модальный. Он может содержать значения sm
для малых, md
для среды и lg
для больших.
<div class="modal fade" id="ww_vergeten" tabindex="-1" role="dialog" aria-labelledby="modal_title" aria-hidden="true">
<div class="modal-dialog modal-sm"> <!-- property to determine size -->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="modal_title">Some modal</h4>
</div>
<div class="modal-body">
<!-- modal content -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="some_button" data-loading-text="Loading...">Send</button>
</div>
</div>
</div>
</div>
Ответ 6
Для Bootstrap 3
здесь, как это сделать.
Добавьте стиль modal-wide
к вашей разметке HTML (в соответствии с примером в документах Bootstrap 3)
<div class="modal fade modal-wide" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 id="myModalLabel" class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
и добавьте следующий CSS
.modal-wide .modal-dialog {
width: 80%; /* or whatever you wish */
}
Нет необходимости переопределять margin-left
в Bootstrap 3
, чтобы теперь это было центрировано.
Ответ 7
В Bootstrap 3 все, что вам нужно, это
<style>
.modal .modal-dialog { width: 80%; }
</style>
Большинство вышеперечисленных ответов не сработало для меня!!!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<style>
#myModal1 .modal-dialog {
width: 80%;
}
#myModal2 .modal-dialog {
width: 50%;
}
</style>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal1">
80%
</button>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal2">
50%
</button>
<center>
<!-- Modal -->
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
custom width : 80%
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
custom width : 50%
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</center>
Ответ 8
Решение было взято из этой страницы
$('#feedback-modal').modal({
backdrop: true,
keyboard: true
}).css({
width: 'auto',
'margin-left': function () {
return -($(this).width() / 2);
}
});
Ответ 9
Bootstrap 3: чтобы поддерживать гибкие функции для небольших и дополнительных небольших устройств, я сделал следующее:
@media (min-width: 768px) {
.modal-dialog-wide
{ width: 750px;/* your width */ }
}
Ответ 10
В v3 из Bootstrap существует простой способ сделать модальный более крупным. Просто добавьте класс modal-lg рядом с модальным диалогом.
<!-- My Modal Popup -->
<div id="MyWidePopup" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg"> <---------------------RIGHT HERE!!
<!-- Modal content-->
<div class="modal-content">
Ответ 11
Если Bootstrap > 3, просто добавьте стиль в ваш модальный.
<div class="modal-dialog" style="width:80%;">
<div class="modal-content">
</div>
</div>
Ответ 12
Я нашел это решение, которое работает лучше для меня. Вы можете использовать это:
$('.modal').css({
'width': function () {
return ($(document).width() * .9) + 'px';
},
'margin-left': function () {
return -($(this).width() / 2);
}
});
или это зависит от ваших требований:
$('.modal').css({
width: 'auto',
'margin-left': function () {
return -($(this).width() / 2);
}
});
Посмотрите сообщение, где я обнаружил, что:
https://github.com/twitter/bootstrap/issues/675
Ответ 13
Это то, что я сделал, в моем custom.css я добавил эти строки, и все.
.modal-lg {
width: 600px!important;
margin: 0 auto;
}
Очевидно, вы можете изменить размер ширины.
Ответ 14
FYI Bootstrap 3 автоматически обрабатывает свойство left. Поэтому просто добавление этого CSS изменит ширину и сохранит ее по центру:
.modal .modal-dialog { width: 800px; }
Ответ 15
Сохраните отзывчивый дизайн, установите ширину в соответствии с тем, что вы хотите.
.modal-content {
margin-left: auto;
margin-right: auto;
max-width: 360px;
}
Держите его простым.
Ответ 16
Изменив класс model-dialog
, вы сможете достичь ожидаемого результата. Эти небольшие трюки работают для меня. Надеюсь, это поможет вам решить эту проблему.
.modal-dialog {
width: 70%;
}
Ответ 17
Попробуйте что-то вроде следующего (см. пример live jsfiddle здесь: http://jsfiddle.net/periklis/hEThw/1/)
<a class="btn" onclick = "$('#myModal').modal('show');$('#myModal').css('width', '100px').css('margin-left','auto').css('margin-right','auto');" ref="#myModal" >Launch Modal</a>
<div class="modal" id="myModal" style = "display:none">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
Ответ 18
Я использовал комбинацию CSS и jQuery вместе с подсказками на этой странице, чтобы создать ширину и высоту жидкости с помощью Bootstrap 3.
Во-первых, некоторые CSS для обработки ширины и дополнительной полосы прокрутки для области содержимого
.modal.modal-wide .modal-dialog {
width: 90%;
}
.modal-wide .modal-body {
overflow-y: auto;
}
И затем некоторый jQuery, чтобы при необходимости настроить высоту области содержимого
$(".modal-wide").on("show.bs.modal", function() {
var height = $(window).height() - 200;
$(this).find(".modal-body").css("max-height", height);
});
Полная запись и код на
http://scottpdawson.com/development/creating-a-variable-width-modal-dialog-using-bootstrap-3/
Ответ 19
С Bootstrap 3 все, что требуется, - это процентное значение, данное модальному диалогу через CSS
CSS
#alertModal .modal-dialog{
width: 20%;
}
Ответ 20
В Bootstrap 3 с помощью CSS вы можете просто использовать:
body .modal-dialog {
/* percentage of page width */
width: 40%;
}
Это гарантирует, что вы не нарушаете дизайн страницы, потому что мы используем .modal-dialog
вместо .modal
, который будет применяться даже к затенению.
Ответ 21
Вместо того, чтобы использовать проценты, чтобы сделать модальный отзывчивый, я нахожу, что может быть больше контроля за использованием столбцов и других чувствительных элементов, уже встроенных в бутстрап.
Чтобы сделать модальный отзывчивый/размер любого количества столбцов:
1) Добавьте дополнительный div вокруг модального диалога div с классом .container -
<div class="container">
<div class="modal-dialog">
</div>
</div>
2) Добавьте немного CSS, чтобы сделать модальную полную ширину -
.modal-dialog {
width: 100% }
3) Альтернативно добавьте дополнительный класс, если у вас есть другие модальности -
<div class="container">
<div class="modal-dialog modal-responsive">
</div>
</div>
.modal-responsive.modal-dialog {
width: 100% }
4) Добавьте строку/столбцы, если вы хотите, чтобы различные модальные модели -
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="modal-dialog modal-responsive">
...
</div>
</div>
</div>
</div>
Ответ 22
Добавьте в свой файл css следующее:
.popover{
width:auto !important;
max-width:445px !important;
min-width:200px !important;
}
Ответ 23
Достигнутый ожидаемый результат с использованием
.modal-dialog {
width: 41% !important;
}
Ответ 24
Я использовал этот способ, и он отлично работает для меня
$("#my-modal")
.modal("toggle")
.css({'width': '80%', 'margin-left':'auto', 'margin-right':'auto', 'left':'10%'});
Ответ 25
Меньшее решение (без js) для Bootstrap 2:
.modal-width(@modalWidth) {
width: @modalWidth;
margin-left: [email protected]/2;
@media (max-width: @modalWidth) {
position: fixed;
top: 20px;
left: 20px;
right: 20px;
width: auto;
margin: 0;
&.fade { top: -100px; }
&.fade.in { top: 20px; }
}
}
Затем везде, где вы хотите указать модальную ширину:
#myModal {
.modal-width(700px);
}
Ответ 26
Я использовал SCSS и полностью отзывчивый модальный:
.modal-dialog.large {
@media (min-width: $screen-sm-min) { width:500px; }
@media (min-width: $screen-md-min) { width:700px; }
@media (min-width: $screen-lg-min) { width:850px; }
}
Ответ 27
you can use any prefix or postfix name for modal. but you need to make sure that should use everywhere with same prefix/postfix name.
body .modal-nk {
/* new custom width */
width: 560px;
/* must be half of the width, minus scrollbar on the left (30px) */
margin-left: -280px;
}
или
body .nk-modal {
/* new custom width */
width: 560px;
/* must be half of the width, minus scrollbar on the left (30px) */
margin-left: -280px;
}
Ответ 28
Ниже приведен код для установки модальной ширины всплывающего окна и левой позиции на экране с помощью javascript.
$('# openModalPopupId'). css ({ "width": "80%", "left": "30%" });
Ответ 29
Bootstrap 3.x.x
<!-- Modal -->
<div class="modal fade" id="employeeBasicDetails" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-sm employeeModal" role="document">
<form>
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal Title</h4>
</div>
<div class="modal-body row">
Modal Body...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</form>
</div>
</div>
Заметьте, что добавлен класс .employeeModal во втором div. Затем создайте этот класс.
.employeeModal{
width: 700px;
}
![снимок экрана фрагмента кода]()
Ответ 30
.Size(ModalSize.Large)
sample:
using (var modal = Html.Bootstrap().Begin(new Modal().Id("modalProject_" + modelItem.id).Closeable().Size(ModalSize.Large)))
{
}