私は、画面の境界内にモーダルダイアログを保持する方法を探しています、つまり、その高さは常に画面の高さよりも小さく、それに応じて幅が調整されます。私は試した:
.modal-dialog {
max-height: 100%;
}
しかし、これは効果がないようです。
イラスト:
存在する場合、純粋なCSSソリューション(jsなし)を好みます。明確にするために、私は高さではなく最大高さを探しています(つまり、モーダルは画面よりも高くないので、そのままにしておきます)。
viewport units とともにcalc
を使用します。このような:
.img-responsive {
max-height: calc(100vh - 225px);
}
...ここで、225pxは、ダイアログを囲むビューポートの上部と下部の合計の高さに対応します。
また、モーダルの幅を処理するには、さらにいくつかのプロパティを設定する必要があります。
.modal {
text-align:center;
}
.modal-dialog {
display: inline-block;
width: auto;
}
calc
を、次のようなパディング+負のマージン技術で置き換えることができます。
.img-responsive {
max-height: 100vh;
margin: -113px 0;
padding: 113px 0;
}
PS:ブラウザのビューポートユニットのサポートは 非常に良い
デフォルト値はautoに設定されているため、幅と高さは100%です。変更することができます。次のように、ビューポート内の画像とターゲットID:
/*let target has the same value as modal-dialog*/
#myModal {
width:auto;
height:auto;
margin:0 auto;
}
/*modify image inside modal-dialog*/
.modal-dialog,.modal-dialog img { /*same value to avoid overwidth*/
width:70%;
height:70%;
margin:0 auto;
}
Jsfiddleの[〜#〜] demo [〜#〜]は次のとおりです。
また、次のように分割することもできます。
.modal-dialog img {
width:100%;
height:100%;
margin:0 auto;
}
.modal-dialog {/*modify the modal-dialog*/
/*ONLY CHANGE THIS, NOT others (#myModal or .modal-image img)*/
width:60%;
height:60%;
margin:0 auto;
}
更新済み[〜#〜] demo [〜#〜]:
親要素に高さが設定されていることを確認したら、かなり簡単にできるはずです。ヘッダーとフッターの高さは10%、本体の高さは80%であるため、合計で100になります:)
.modal, .modal-dialog, .modal-content{
height: 100%;
}
.modal-header, .modal-footer {height:10%;}
.modal-body {height:80%;}
.img-responsive {
max-height:100%;
}
スクリプト
$('#myModal').on('show.bs.modal', function () {
$('.modal-content').css('max-height',$( window ).height()*0.8);
$('.modal-content img').css('max-height',(($( window ).height()*0.8)-86));
});
フィドルいくつかのcss変更を加えてみてください。
css:
.modal-dialog {
height: 100%;
margin: 0;
padding: 10px;
}
.modal-content { height:100%; }
.modal-body {
position: absolute;
padding: 15px;
left:0;
right:0;
top: 55px;
bottom: 65px;
margin: auto;
}
.modal-body > p {
height: 100%;
margin: 0;
}
.img-responsive{
max-height: 100%;
max-width: 100%;
margin:auto;
}
.modal-footer {
position: absolute;
bottom: 0;
left: 0;
right: 0;
}
Max-heightとmax-widthを100%に設定すると、それに応じて自動的に画面が表示されますが、このダイアログサイズを小さくするには、max-heightとmax-widthを一定の値に設定する必要があります。すでにレスポンシブモデルダイアログを使用しているため、画面サイズに応じてダイアログサイズが自動的に変更されます。
要件に応じて機能するcssを試してください。それに応じてmax-heightとmax-widthを変更できます。margin-leftとmargin-rightは中央揃えに使用されます。
.modal-dialog {
max-height: 225px;
max-width: 200px;
margin-left: auto;
margin-right: auto;
}
お役に立てば幸いです。!
modal-body
ではなく、modal-dialog
をターゲットにします。
以下をCSSに追加します。
max-height: 80vh;
overflow-y: auto;
次のようになります。
.modal-body {
max-height: 80vh; overflow-y: auto;
}
VHの高さを好みに合わせて調整します。
最初にコンテナサイズを修正してから、モーダルダイアログサイズを設定します。
例えば:
.modal{height:100%;width:50%;margin: 0 auto;}
.modal-dialog{overflow:hidden; max-height:96%;}
Overflow:.modal-dialogに隠された、画像の割合を維持するスタイルを使用する必要があると思います。