私は Twitter Bootstrapのモーダル を使用していますが、画面が小さいためにスクロールできるようにする必要があるため、位置を絶対に変更する必要がありました。悲しいことに、これにより、モーダルは表示領域ではなく、サイトの固定位置に開きます。私が現在見ている画面にそれらを開く(そしてスクロールできる)方法はありますか?
CSS:
.modal {
width: 845px;
margin: -250px 0 0 -430px;
background-color: #f6f5ed;
position: absolute;
border: 1px solid #cdc4b2;
top: 50%;
left: 50%;
}
このスレッド: Bootstrap 2のモーダルプラグインは中央に表示されません 正解があり、ここにも投稿されています:
$('#YourModal').modal().css(
{
'margin-top': function () {
return window.pageYOffset-($(this).height() / 2 );
}
});
私の問題は@Stephanieと同じですが、@ steveの解決策はうまくいきませんでした。
ステファニーと私が共有する問題を言い換えると:
長いbootstrapモーダルがあります。小さな画面では、スクロールしないとモーダル全体を表示できません。デフォルトでは、bootstrapモーダルはposition:fixedです。できます。これをposition:absoluteに変更して、スクロールできるようにします。
しかし今、私は新しい問題を抱えています。私のページも長いので、ページのbottomからモーダルを起動すると、モーダルがに表示されます。 )ページのtop、現在のブラウザビューの外。
したがって、これらの両方を修正するには:
css:
// allows the modal to be scrolled
.modal {position: absolute;}
javascript/jQuery:
// jumps browser window to the top when modal is fired
$('body').on('show', '.modal', function(){
$('body').scrollTop(0);
});
しかし、FirefoxはscrollTopのセレクターとしての「body」は好きではありませんが、「html」は好きです。 Webkitは逆に動作します。ここからのコメントの使用: Firefoxでスクロールトップが機能しないアニメーション
私はjQuery <1.9を使用しているので、これを解決するためにブラウザースニッフィングを行うことができます。
// jumps browser window to the top when modal is fired
$('body').on('show', '.modal', function(){
// Firefox wants 'html', others want 'body'
$(jQuery.browser.mozilla ? "html" : "body").scrollTop(0);
});
モーダルが起動されると、ページの上部に表示され、ブラウザウィンドウが上にスクロールして表示されますが、画面が小さすぎてモーダルの全長を表示できない場合でも、ユーザーは下にスクロールできます。
ゲームに少し遅れていますが、これは私が現在実施している修正であり、Firefox、ChromeおよびIEで機能します。
$('body').on('show', '.modal', function () {
$(this).css({ 'margin-top': window.pageYOffset - $(this).height() / 2, 'top': '50%' });
$(this).css({ 'margin-left': window.pageXOffset - $(this).width() / 2, 'left': '50%' });
});
「絶対」ではなく「固定」の位置を使用してください。
詳細はこちら http://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/
モバイルでスクロールできるように、絶対位置にも変更する必要がありました。
これは私にも役立ちました(AllInOneによるソリューション):
// jumps browser window to the top when modal is fired
$('body').on('show', '.modal', function(){
// Firefox wants 'html', others want 'body'
$(jQuery.browser.mozilla ? "html" : "body").scrollTop(0);
});
問題はCSSです-「body」タグと「HTML」タグが「height:100%」に設定されています