YouTubeのビデオ、Vimeoのビデオ、テキスト、Imgurの写真など、さまざまな種類のデータを含むデータベースコンテンツがあります。それらはすべて高さと幅が異なります。インターネットを検索している間に見つけたのは、サイズを1つのパラメータに変更しただけです。ポップアップの内容と同じでなければなりません。
これは私の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>
コンテンツは動的である必要があるため、モーダルのshow
イベントでモーダルのcssプロパティを動的に設定して、モーダルのサイズを変更してデフォルトの仕様を上書きすることができます。ブートストラップである理由は、以下のように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
をターゲットのモーダルに追加します。
フィドルでコンテンツを動的に変更すると、それに応じてモーダルのサイズが変更されます。 Demo
新しいバージョンのブートストラップは入手可能な event names
を参照してください。
ブートストラップの古いバージョン modal events サポートされています。
これは私のために働きました、上記のどれも働きませんでした。
.modal-dialog{
position: relative;
display: table; /* This is important */
overflow-y: auto;
overflow-x: auto;
width: auto;
min-width: 300px;
}
PSLの答えがうまくいかなかったので、モーダルコンテンツを保持するdivにstyle="display: table;"
を設定するだけでよいことがわかりました。モーダルコンテンツ自体は、それがどのくらい大きくなりたいかを示し、モーダルはそれを収容します。
ブートストラップ3用
$('#myModal').on('hidden.bs.modal', function () {
// do something…
})
あなたがCSSを書きたいなら、これをする多くの方法があります、そして、以下を加えてください
.modal-dialog{
display: table
}
インラインを追加したい場合
<div class="modal-dialog" style="display:table;">
//enter code here
</div>
モーダルコンテンツクラスにdisplay:table;
を追加しないでください。それはあなたの仕事をしました、しかし、大きいサイズのためにあなたのモーダルを処分してください以下のスクリーンショットを見てください。最初の画像は、モーダルダイアログにスタイルを追加した場合です モーダルコンテンツにスタイルを追加した場合それは処分に見えます。
単純なCssは私のために働きます
.modal-dialog {
max-width : 100% ;
}
私は単にCSSをオーバーライドします。
.modal-dialog {
max-width: 1000px;
}
Gijgo.comのjqueryダイアログプラグインを使用して幅をautoに設定すれば、それが可能になります。
$("#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>
Resizableをtrueに設定すると、ユーザーにサイズの制御を許可することもできます。あなたはこれについてのデモを見ることができます http://gijgo.com/Dialog/Demos/bootstrap-modal-resizable
垂直方向と水平方向にモーダルを中央に配置する単純なCSSソリューション。
.modal.show {
display: flex !important;
justify-content: center;
}
.modal-dialog {
align-self: center;
}
Mine Solutionは、以下のスタイルを追加することだけでした。 <div class="modal-body" style="clear: both;overflow: hidden;">
モーダルdivにwidth:fit-content
を設定します。
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;');
});
Bootstrap 4以降 - のスタイルは次のとおりです。
@media (min-width: 576px)
.modal-dialog {
max-width: 500px;
}
したがって、modalの幅をいくらか大きくしたい場合は、CSSでこれを使用することをお勧めします。
.modal-dialog { max-width: 87vw; }
注設定width: 87vw;
はブートストラップのmax-width: 500px;
を上書きしません。
私はブートストラップ3と同じ問題を抱えており、modal-body divの高さは442pxを超えたくありません。これは私の場合それを修正するために必要なすべてのCSSでした:
.modal-body {
overflow-y: auto;
}