31

I am using bootstrap to set up a modal popup. When a button is clicked, the modal dialog opens, but the entire page is slightly "tinted", and I can't interact with the modal (the page essentially freezes). Do you know why this would be? Here is the code:

button:

<a class="add-list-button-no-margin opener" id="id" data-toggle="modal" href="#myModal" style="color: white; font:14px / 14px 'DINMedium','Helvetica Neue',Helvetica,Arial,sans-serif;">Play my city</a>

modal:

<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
      <div class="modal-dialog">
        <div class="modal-content">

          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title" id="myModalLabel">Congratulations!</h4>
          </div>
          <div class="modal-body">
            <h4>Text in a modal</h4>
            <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p>

            <h4>Popover in a modal</h4>
            <p>This <a href="#" role="button" class="btn btn-default popover-test" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">button</a> should trigger a popover on click.</p>

            <h4>Tooltips in a modal</h4>
            <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> should have tooltips on hover.</p>

            <hr>

            <h4>Overflowing text to show optional scrollbar</h4>
            <p>body</p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
          </div>

        </div><!-- /.modal-content -->
      </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->

EDIT:

Here are the included files:

<link media="all" type="text/css" rel="stylesheet" href="http://crowdtest.dev:8888/assets/CSS/style.css">
<link media="all" type="text/css" rel="stylesheet" href="http://crowdtest.dev:8888/assets/CSS/jquery-ui-1.10.1.custom.min.css">
<link media="all" type="text/css" rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css">

<link media="all" type="text/css" rel="stylesheet" href="http://crowdtest.dev:8888/assets/CSS/bootstrap.css">

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>
<script src="http://crowdtest.dev:8888/assets/js/script.js"></script>
<script src="http://crowdtest.dev:8888/assets/js/jquery-ui-1.10.1.custom.min.js"></script>

<script src="http://crowdtest.dev:8888/assets/js/bootstrap.js"></script>

EDIT: Happens in all browsers tried (Chrome, Firefox, Safari)

user1072337
  • 12,615
  • 37
  • 116
  • 195

10 Answers10

65

Ok, so I figured out the issue.

If the modal container has a fixed position or is within an element with fixed position this behavior will occur.

Easiest way is to just move the modal div so it is outside any elements with special positioning. One good place might be just before the closing body tag .

This is what I did, and it worked.

user1072337
  • 12,615
  • 37
  • 116
  • 195
  • This is the more correct fix than changing the modal-backdrop's z-index (answer) below. Changing the z-index does not properly fade out the body's content sometimes. – konyak Oct 14 '19 at 17:34
  • If anyone who has failed this attempt find out if you have leakage at the end of the page or anywhere inside a page. – Sohan Arafat Sep 28 '21 at 23:15
31

This happened to me, and it took ages to diagnose. If it happens to you, add this to your css:

div.modal div.modal-backdrop {
    z-index: 0;
}

EDIT: You may need more specificity for this setting to be picked up. As Nick Spoon suggests, you can use

body.modal-open div.modal-backdrop { 
    z-index: 0; 
}

And you may need to add more qualifiers, depending on what the rest of your CSS is doing. You can also use !important, but that's just sweeping the problem under the rug.

Rob Lyndon
  • 12,089
  • 5
  • 49
  • 74
  • 2
    Thanks! A variation of this worked for me: `body.modal-open div.modal-backdrop { z-index: 0; }` – nickspoon Oct 12 '15 at 08:16
  • This answer did not work for me but @nickspoon 's comment did – Yatharth Agarwal Feb 27 '16 at 17:04
  • 1
    Yes, that can happen. You might need more specificity for it to get picked up. I've just encountered the same problem in a new project, and saved my own bacon with this answer. Big thanks to me from over a year ago. – Rob Lyndon Jun 10 '16 at 17:26
  • Perfect. This was my exact problem. I had a z-index setting of 1 on one of my div's.. What was mentioned to 0 worked but the div underneath was visible still while everything else was shadowed out, which looked cool but I had to put the modal setting to the same z-index or higher has the div it was overlaying for my issue to be fixed. Thanks for this!! – eaglei22 Nov 15 '16 at 19:18
  • 1
    Worked here. Probably saved me hours. –  Mar 01 '17 at 00:25
  • Thank you! I had to use z-index: -1 (modal window of APY Datagrid in Symfony, in case anyone searches that). – nomistic Jul 13 '18 at 15:56
  • this also worked for me too. I just change .modal-backdrop z-index to zero. – PNP Feb 21 '20 at 02:56
8

Solved it by adding data-backdrop="false" to the main div as:

<div class="modal fade" data-backdrop="false" tabindex="-1" role="dialog">
  ......
</div>
Mehmood Memon
  • 1,129
  • 2
  • 12
  • 20
  • 2
    By far the easiest and cleanest method, doesn't require mods to the CSS and scope is limited to the modal in question. – user1946891 Feb 26 '20 at 17:13
3

I found a good fix for this problem here:

https://stackoverflow.com/a/18764086

Add -webkit-transform: translateZ(0) to the position: fixed element. This forces Chrome to use hardware acceleration to continuously paint the fixed element and avoid this bizarre behavior.

Community
  • 1
  • 1
1

If you want to open the print dialog on button present on modal itself and after printing your webpage is not accessible then it will definitely work for you rather then the window.print().

Use below code. First of all you need to close the modal dialog and open the print dialog after few seconds.

setTimeout(function() { printnow('printdiv', 10); }, 500);
Soumya Kanti
  • 1,429
  • 1
  • 17
  • 28
0

I fixed this problem by moving all modal html to the bottom of my file! Nothing else worked. Only the button to open the modal is within the rest of the html. This could have something to do with body tag declarations but I don't have time to worry about it.

FayeB
  • 251
  • 3
  • 3
0

I ran into this as well and found this exact phenomenon occurs with the screen freezing after clicking the button to open a Modal and found this was due to an unclosed that I accidently deleted.

When I added the closing , the Modal Popup started working again.

jroyce
  • 2,029
  • 2
  • 22
  • 45
0

If you're using ASP.NET, make sure you place the modal's div block inside a <asp:Content ContentPlaceHolderID="BottomOfForm" runat="server">.

Simon Morgan
  • 2,018
  • 5
  • 23
  • 36
0

The simplest solution that worked for me is that move the modal div just above the closing of the body tag.

I hope this works also for you.

Mayur Gupta
  • 303
  • 2
  • 14
-1

I know this is an old question, but I had a similar issue and in case anyone has the same, here is what worked for me. Make sure you include the modal css file!

hgolov
  • 650
  • 1
  • 11
  • 28