648

Bootstrap の例からそのままモーダルのコードを使用し、bootstrap.js のみを含めました (bootstrap-modal.js は含めません)。ただし、モーダルは灰色のフェード (背景) の下に表示され、編集できません。

外観は次のとおりです。

背景の後ろに隠れるモーダル

この問題を再現する1 つの方法については、このフィドルを参照してください。そのコードの基本構造は次のようになります。

<body>
    <p>Lorem ipsum dolor sit amet.</p>    

    <div class="my-module">
        This container contains the modal code.
        <div class="modal fade">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-body">Modal</div>
                </div>
            </div>
        </div>
    </div>
</body>
body {
    padding-top: 50px;
}

.my-module {
    position: fixed;
    top: 0;
    left: 0;
}

これがなぜなのか、またはこれを修正するために私にできることはありますか?

4

58 に答える 58

718

モーダル コンテナーが固定または相対位置を持っているか、固定または相対位置を持つ要素内にある場合、この動作が発生します。

問題を解決するには、モーダル コンテナーとそのすべての親要素が既定の方法で配置されていることを確認してください。

これを行うには、いくつかの方法があります。

  1. 最も簡単な方法は、モーダル div を移動して、特別な配置を持つ要素の外側に配置することです。body タグの直前がいいかもしれません</body>
  2. position:または、問題が解決するまで、モーダルとその祖先から CSS プロパティを削除することもできます。ただし、これにより、ページの外観と機能が変わる可能性があります。
于 2012-08-03T03:09:40.303 に答える
185

上記のすべてのオプションを試しましたが、それらを使用しても機能しませんでした。

うまくいったこと: .modal-backdrop の z-index を -1 に設定します。

.modal-backdrop {
  z-index: -1;
}
于 2014-11-14T01:07:16.707 に答える
66

モーダルウィンドウを開いた後に高い z-index 値を与えることで動作するようになりました。例えば:

$("#myModal").modal("show");
$("#myModal").css("z-index", "1500");
于 2012-12-12T07:24:39.283 に答える
16

A、これは遅れていますが、ここに一般的な解決策があります-

    var checkeventcount = 1,prevTarget;
    $('.modal').on('show.bs.modal', function (e) {
        if(typeof prevTarget == 'undefined' || (checkeventcount==1 && e.target!=prevTarget))
        {  
          prevTarget = e.target;
          checkeventcount++;
          e.preventDefault();
          $(e.target).appendTo('body').modal('show');
        }
        else if(e.target==prevTarget && checkeventcount==2)
        {
          checkeventcount--;
        }
     });

詳細については、このリンク -ブートストラップ 3 - 固定サイドバーを使用すると背景の下に消えるモーダルを参照してください。

于 2014-01-15T01:15:37.807 に答える
10

次の 2 行の CSS を追加するだけです。

.modal-backdrop{z-index: 1050;}
.modal{z-index: 1060;}

.modal-backdrop には、navbar の上に設定する 1050 の値が必要です。

于 2016-05-28T21:51:34.773 に答える
10

.modal-backdropこれにアプローチする別の方法は、bootstrap.cssから z-index を削除することです。これにより、背景が体の残りの部分と同じレベルになり (まだフェードします)、モーダルが一番上になります。

.modal-backdropこのように見えます

.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: #000000;
}
于 2014-11-26T01:41:21.823 に答える
9

私は単に設定しました:

#myModal {
    z-index: 1500;
}

そしてそれは動作します....

元の質問の場合:

.my-module {
    z-index: 1500;
}
于 2015-02-12T16:02:29.260 に答える
6

こんにちは、私は同じ問題を抱えていましたが、ブートストラップ 3.1 を使用すると、古いバージョンのブートストラップ (2.3.2) とは異なり、モーダルの html 構造が変更されたことに気付きました!

modal-dialog と modal-content でモーダル ヘッダーのボディとフッターをラップする必要があります

<div class="modal hide fade">

  <div class="modal-dialog">
    <div class="modal-content">

    **here goes the modal header body and footer**

    </div>
  </div>

 </div>
于 2014-02-12T08:22:27.720 に答える
6

上記の提案された解決策はどれもうまくいきませんでしたが、この手法で問題が解決しました:

$('#myModal').on('shown.bs.modal', function() {
   //To relate the z-index make sure backdrop and modal are siblings
   $(this).before($('.modal-backdrop'));
   //Now set z-index of modal greater than backdrop
   $(this).css("z-index", parseInt($('.modal-backdrop').css('z-index')) + 1);
}); 
于 2015-09-05T11:40:36.210 に答える
6

私はこの問題を抱えていましたが、それを修正する最も簡単な方法は、モーダルダイアログの div に 1040 より大きい z-index を追加することでした:

<div class="modal-dialog" style="z-index: 1100;">

ブートストラップは、私の場合は z-index 1040 を持つ div modal-backdrop フェードを作成すると信じているので、これの上に modal-dialog を配置すると、グレーアウトすることはなくなります。

于 2016-02-08T16:58:08.183 に答える
4

あなたのナビゲーションバーのnavbar-fixed-top必要性に加えて、また変更 z-index = 1041 を使用する場合bootstarp-combined.min.css.navbar-fixed-top, .navbar-fixed-bottom z-index to 1041

于 2013-11-08T10:57:29.920 に答える
3

モーダル背景を削除しました。

.modal-backdrop {
    display:none;
}

これはより良い解決策ではありませんが、私にとってはうまくいきます。

于 2015-04-04T06:37:37.327 に答える
3

これをあなたのページに追加してください。それは私のために働く。

<script type="text/javascript">
    $('.modal').parent().on('show.bs.modal', function (e) { $(e.relatedTarget.attributes['data-target'].value).appendTo('body'); })
</script>
于 2016-07-23T12:50:24.720 に答える
3

私が見つけたのはそれです:

ブートストラップ 3.3.0 では正しくありませんが、ブートストラップ 3.3.5 では正しくなります。コードを見てみましょう。3.3.0:

this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
    .prependTo(this.$element)

3.3.5

  this.$backdrop = $(document.createElement('div'))
        .addClass('modal-backdrop ' + animate)
        .appendTo(this.$body)
于 2015-11-23T09:54:06.043 に答える
3

.modal-backdrop から z-index を削除することもできます。結果の css は次のようになります。

.modal-backdrop {
}
  .modal-backdrop.in {
    opacity: .35;
    filter: alpha(opacity=35); }
于 2015-05-05T20:38:23.320 に答える
3
$('.modal').insertAfter($('body'));
于 2016-01-03T23:43:12.913 に答える
3

私にとって最も簡単な解決策は、.modal-backdrop よりも高い絶対位置と z-index を持つラッパーにモーダルを配置することでした。modal-backdrop (少なくとも私の場合) には z-index 1050 があるため:

.my-modal-wrapper {
  position: absolute;
  z-index: 1060;
}
<div class="my-modal-wrapper"></div>

于 2018-12-20T09:53:23.277 に答える
3

HTML を調べたところ、閉じられていない<div>タグがあることがわかりました。閉じると<div>問題が解決しました。PS:<div>タグはモーダルの祖先でも子でもありませんでした。

于 2021-07-28T09:27:18.257 に答える
2

Davide Lorigliola のように、z-index を上げて修正しました。

.modal-backdrop { z-index: -999999; }
于 2015-05-06T01:45:51.967 に答える
2

絶対位置を相対に変更します。

.modal-backdrop {
    position: relative;
    /* ... */
}
于 2015-03-19T02:38:57.130 に答える
1

ボディに追加するときは注意してください!

これは間違いなく背景の後ろからそのモーダルを取得します:

$('#myModal').appendTo("body").modal('show');

ただし、これにより、ボディを開くたびに別のモーダルがボディに追加されるため、更新パネル内の編集および更新を含むグリッドビューなどのコントロールをモーダルに追加するときに頭が痛くなる可能性があります。したがって、モーダルが閉じるときに削除することを検討してください。

例えば:

$(document).on('hidden.bs.modal', function () {
        $('.modal').remove();
    });

追加されたモーダルを削除します。(もちろんこれは一例であり、モーダルに追加した別のクラス名を使用することもできます)。

そして、すでに他の人が述べたように; モーダルから背景をオフにするだけです (data-backdrop="false")。または、画面を暗くしないと生きていけない場合は、.modal-backdrop css クラスを調整できます (z-index を増やす)。

于 2016-10-05T16:24:31.513 に答える
1

私は同じ問題を抱えていて、Muhdの答えもチェックしてください。

しかし、私のモーダルは左、上属性が必要なので、固定位置を絶対位置に変更するだけでうまくいきました。

.modal {
    position: absolute;
}
于 2016-03-03T10:40:28.690 に答える
1

この動作は、閉じられていないタグ、特に unclosed がある場合に発生することがあります</div>。モーダルの場所を確認し、すべてのタグが適切に閉じられていることを確認するか、</body>タグを囲む直前に div モーダルをページの下部に近づけることができます。

于 2014-12-05T19:18:02.630 に答える
0

回避策を作成できますが、これによりすべてのページからフェードが削除されます。モーダルは、Facebook のポップアップのようにポップアップします。モーダルを開いた後、次を試してください:

 $('.modal-backdrop').removeClass('modal-backdrop');
于 2014-06-19T07:07:51.897 に答える
0

私のように、プラグインやテーマを使用せずにBootstrapWordpressに追加した場合:

ファイルにブートストラップCSSJSを追加しました。function.php次に、ワードプレスページでモーダルを呼び出します。私が何をしても、の前に.modal-backdropい続けました#mymodalこれはz-index の問題であることがわかりましたが、 内およびの最後に#mymodal生成されたように、z-index が機能しませんでした。私がしたことは、それが生成された後も最後に移動することでした:content div.modal-backdrop<body>#mymodal

$(document).ready(function () {
   $('#mymodal').on('shown.bs.modal', function () {
       $('#mymodal').appendTo(document.body);
     })
});

ちなみに、ボタンを押しても呼び出されていなかったので、shown.bs.modal内部に追加する必要がありました。$(document).ready

于 2020-06-05T00:48:12.183 に答える
0

クラス.modal-openオーバーフロー値を からhiddenに上書きしてみてvisibleください。

.modal-open {
    overflow: visible;
}
于 2013-08-09T23:19:53.480 に答える
0

Sharepoint 2013 Modal ブートストラップを使用して Iphone と Ipad でこのような問題が発生し、バックグラウンドで z-index の問題が発生しました。

私はこれを JS で使用します:

$('#myModal').on('shown.bs.modal', function() {
   //To relate the z-index make sure backdrop and modal are siblings
   $(this).before($('.modal-backdrop'));
   //Now set z-index of modal greater than backdrop
   $(this).css("z-index", parseInt($('.modal-backdrop').css('z-index')) + 1);
}); 

于 2017-06-08T13:20:36.830 に答える
-2

display: noneset " " にインライン スタイル タグを追加すると、この問題が回避されることがわかりました。コードの位置は何の効果もありませんでした。

于 2013-09-30T16:52:46.657 に答える
-4

これをスタイル シートに追加します。

.modal-backdrop {
    background-color: #000;
    bottom: 0;
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 0 !important;
}
于 2014-11-25T10:40:05.720 に答える