38

Bootstrap use blackout when it shows modal dialog. How I make blur effect on entire background?

Damjan Pavlica
  • 31,277
  • 10
  • 71
  • 76
eugenes
  • 701
  • 2
  • 7
  • 16
  • 2
    To save readers some time: The only way seems to be to blur the actual content. There seems to be no (simple) way to put a "blurry glass layer" over content and make everything behind that layer blurry. Also blurring the whole body is not an option as you cannot "unblur" your modal window. – BlaM May 23 '18 at 13:51

6 Answers6

60

You need to alter the structure of your document first. It should look something like this

<body>
   <div class="supreme-container">all your content goes here except for the modal</div>
   <div id="myModal" class="modal fade">This is your modal.</div>
</body>

And then in css

body.modal-open .supreme-container{
    -webkit-filter: blur(1px);
    -moz-filter: blur(1px);
    -o-filter: blur(1px);
    -ms-filter: blur(1px);
    filter: blur(1px);
}
lucian
  • 823
  • 1
  • 8
  • 12
36

If you are using boostrap then your content is already in some kind of container. So this works for me without the need to alter may HTML or any additional JS:

.modal-open .container-fluid, .modal-open  .container {
    -webkit-filter: blur(5px) grayscale(90%);
}
18

For me I was Opening One Modal after another so No solution were working on Second modal and below CSS Worked on every time in every modal:

.modal-backdrop{
   backdrop-filter: blur(5px);
   background-color: #01223770;
}
.modal-backdrop.in{
   opacity: 1 !important;
}
Muhammad Bilal
  • 497
  • 1
  • 5
  • 12
9

I think the easiest way to achieve this is to apply a blur class to background elements using jQuery when the modal is open. Remove blur when the modal is closed...

.blur {
    box-shadow: 0px 0px 20px 20px rgba(255,255,255,1);
    text-shadow: 0px 0px 10px rgba(51, 51, 51, 0.9);
    transform: scale(0.9);
    opacity: 0.6;
}

http://bootply.com/74705

Carol Skelly
  • 351,302
  • 90
  • 710
  • 624
5

With Bootstrap 4 this CSS snippet did the trick for me:

.modal.fade.show {
    backdrop-filter: blur(5px);
}
gil.fernandes
  • 12,978
  • 5
  • 63
  • 76
0

For me, the following solution is working fine

.modal-open .container-fluid, .modal-open  .container {
  -webkit-filter: blur(1px);
  -moz-filter: blur(1px);
  -o-filter: blur(1px);
    -ms-filter: blur(1px);
    filter: blur(1px);
}
Sachin from Pune
  • 656
  • 8
  • 19