ブートストラップを学んで公式ページの例を試していたところ、モーダルコンポーネントに(たぶん)欠陥が見つかりました。
[Launch demo modal] をクリックすると、右上隅に顕著な余白があり、モーダル ダイアログが非表示または表示されるとナビゲーション バーが伸縮します。
それはバグですか、それとも意図的なものですか?面倒だと思うのですが、どうすれば無効にできますか?
ブートストラップを学んで公式ページの例を試していたところ、モーダルコンポーネントに(たぶん)欠陥が見つかりました。
[Launch demo modal] をクリックすると、右上隅に顕著な余白があり、モーダル ダイアログが非表示または表示されるとナビゲーション バーが伸縮します。
それはバグですか、それとも意図的なものですか?面倒だと思うのですが、どうすれば無効にできますか?
これを手動で修正するには、追加するだけです
body.modal-open,
.modal-open .navbar-fixed-top,
.modal-open .navbar-fixed-bottom
{
margin-right: 0px;
}
ブートストラップ スタイルシートの後に適用されるスタイルシートに。
スクロールバーも非表示にしたい場合は、追加できます
.modal
{
overflow-y: auto;
}
同じように。
元のページにスクロールバーが既にある場合とない場合の両方を必ずテストしてください。
これはv3.1.1でうまくいきました。
html, .modal, .modal.in, .modal-backdrop.in {
overflow-y: auto;
}
これに加えて、次のものがあることも確認してください
html { overflow-y:auto; }
スタイルシートで左シフトを停止します
私もこの問題を抱えていました(ブートストラップ3.1.1)。モーダルを開いていたところ、背景 (モーダルがページの高さよりも大きい場合にスクロール バーが表示される場所) にスペースがなく、ページのコンテンツのサイズが変更され、左にシフトしていました。
私のレイアウトは固定ナビゲーションバーを使用しています。
ページのサイズ変更を防ぎ、モーダル背景が画面いっぱいになるように見えるいくつかの CSS セレクターを追加しました。
html {
/* This prevents the page from shifting when a modal is opened e.g. search */
overflow-y: auto;
}
.modal,.modal.in,.modal-backdrop.in {
/* These are to prevent the blank space for the scroll bar being displayed unless the modal is > page height */
overflow-y: auto;
}
ページとモーダル コンテンツが画面の高さよりも大きい場合に 2 つのスクロール バーを表示できるのは少し奇妙ですが、それでも問題ありません。
body, .navbar-fixed-top, .navbar-fixed-bottom {
margin-right: 0 !important;
}
これは私のために働いた
私はAgni Pradharmaの修正を試みましたが、機能させるために少し調整する必要がありました。
私はこれを使ってそれを動かしました:
$(document.body)
.on('show.bs.modal', function () {
if (this.clientHeight <= window.innerHeight) {
return;
}
// Get scrollbar width
var scrollbarWidth = getScrollBarWidth()
if (scrollbarWidth) {
$('.navbar-fixed-top').css('margin-right', scrollbarWidth);
}
})
.on('hide.bs.modal', function () {
$('.navbar-fixed-top').css('margin-right', 0);
});
function getScrollBarWidth () {
var inner = document.createElement('p');
inner.style.width = "100%";
inner.style.height = "200px";
var outer = document.createElement('div');
outer.style.position = "absolute";
outer.style.top = "0px";
outer.style.left = "0px";
outer.style.visibility = "hidden";
outer.style.width = "200px";
outer.style.height = "150px";
outer.style.overflow = "hidden";
outer.appendChild (inner);
document.body.appendChild (outer);
var w1 = inner.offsetWidth;
outer.style.overflow = 'scroll';
var w2 = inner.offsetWidth;
if (w1 == w2) w2 = outer.clientWidth;
document.body.removeChild (outer);
return (w1 - w2);
};
margin-right
私の場合はうまくいきませんでしたがpadding-right
、問題を解決することがわかりました。
body.modal-open {
padding-right: 0px;
}