Reputation: 2842
I have a bootstrap modal that is included inside a faded div.
For some reason, the modal, after opening, is behind the grey background and is thus not accessible.
<div>
<button class="btn btn-primary" data-target="#normal" data-toggle=
"modal">Normal</button>
<div class="modal fade" id="normal" role="dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
...
</div>
</div>
</div>
</div>
<div id="faded">
<button class="btn btn-primary" data-target="#faded-modal" data-toggle=
"modal">Faded</button>
<div class="modal fade" id="faded-modal" role=
"dialog" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
...
</div>
</div>
</div>
</div>
#faded {
opacity: 0.7;
}
As you can see on the example the first modal is correctly displayed and the second one (the faded one) is appearing behind the background, inaccessible.
How can I change this behavior? The modal should be displayed as usual ...
Notes: I cannot change the HTML, and I need to keep the opacity on the parent, this is a simpler example to show the effect but there are other elements that are faded as well.
Upvotes: 0
Views: 8464
Reputation: 2879
The <div class="modal fade"...
has to be moved out of the <div id="faded">...
so that it does not take the <div class="modal fade"...
as its parent div..
I.e. instead of
<div id="faded">
<button class="btn btn-primary" data-target="#faded-modal" data-toggle=
"modal">Faded</button>
<div class="modal fade" id="faded-modal" role=
"dialog" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
...
</div>
</div>
</div>
</div>
TRY...
<div id="faded">
<button class="btn btn-primary" data-target="#faded-modal" data-toggle=
"modal">Faded</button>
</div>
<div class="modal fade" id="faded-modal" role=
"dialog" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
...
</div>
</div>
</div>
Upvotes: 0
Reputation: 3920
Don't apply the "faded" id to the div around the button. Apply it to the button itself. To have a faded button, apply the faded as a class to the button.
.faded{
opacity: 0.7;
}
<div>
<button class="btn btn-primary faded" data-toggle="modal" data-target="#faded-modal">Faded</button>...
Upvotes: 0
Reputation: 2622
Working Code, Just Added faded css to button only
#faded{
opacity: 0.7;
}
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<div>
<button class="btn btn-primary" data-toggle="modal" data-target="#normal">Normal</button>
<div id="normal" class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum sequi, quod, id aut tempora soluta commodi deleniti ratione nesciunt, tenetur iste incidunt veniam dolores accusantium corporis, laboriosam nam provident est.</p>
</div>
</div>
</div>
</div>
<div id="faded"> <button class="btn btn-primary" data-toggle="modal" data-target="#faded-modal">Faded</button></div>
<div id="faded-modal" class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum sequi, quod, id aut tempora soluta commodi deleniti ratione nesciunt, tenetur iste incidunt veniam dolores accusantium corporis, laboriosam nam provident est.</p>
</div>
</div>
</div>
Upvotes: 0
Reputation: 1644
The second modal is also appearing in front of the background, but it is faded to 0.7 opacity because the parent element is. If you want to achieve it unfaded, you'll need to make the parent div transparent and stick a new one in with 100% width and height, the background colour and opacity set. You'll also need to use z-orders to make sure it appears behind the modal.
Upvotes: 1