2015-01-22 6 views
24

Ich verwende Bootstrap-Modal. Wenn Modal geöffnet ist, wird die Hintergrund-Deckkraft nicht standardmäßig geändert. Ich habe versucht, in js ÄndernWie ändere ich die Hintergrund-Opazität, wenn das Bootstrap-Modal geöffnet ist?

function showModal() { 
document.getElementById("pageContent").style.opacity = "0.5"; 

}

Verwendung Das funktioniert aber, wenn modal geschlossener Opazität Stil bleibt für das pagecontent noch ist. Aber ich bin mir sicher, dass dies nicht der richtige Weg ist. Jede Hilfe wird geschätzt. Vielen Dank. Html-Taste, die Modal öffnet, ist

<button class="btn glossy-clear" data-toggle="modal" data-target="#modal-display" onclick="showModal()">Clear</button> 

Modal-Code

<div class="modal fade" id="modal-display"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title">Search results</h4> 
    </div> 
    <div class="modal-body"> 
     <div class="container"> 
     <div class="row"> 
      <div class="col-md-5">Hello</div> 
      <div class="col-md-5">i!!!!</div> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
</div> 

EDIT ist:

modal-backdrop div

+0

Danke für die Antworten. Ich habe alles versucht, aber immer noch nicht funktioniert. Ich habe in Entwickler-Tools Modal-Hintergrund div außerhalb des Formular-Tags hinzugefügt, wenn Modal geöffnet ist, bin ich mir nicht sicher, ob dies der Grund ist. Bild zur Frage hinzugefügt. – Bhargavi

Antwort

45

Ich gehe davon aus Sie die Opazität des modalen Hintergrund festlegen möchten .. .

Stellen Sie die Deckkraft über ein CSS

.modal-backdrop 
{ 
    opacity:0.5 !important; 
} 

!important verhindert, dass die Opazität überschrieben werden - vor allem aus Bootstrap in diesem Zusammenhang.

+0

Wenn ich das mache, ist sogar Modal transparent, wenn geöffnet. Aber du hast mich daran erinnert, dem Modal Div eine Modal-Backdrop-Klasse hinzuzufügen. Danach ist der Hintergrund schwarz statt transparent. – Bhargavi

+1

Modalen Hintergrund nicht zum Modal Div hinzufügen. Der modale Hintergrund ist die Klasse, die der Bootstrap für den Hintergrund verwendet, auf dem Modal erscheint. Sie müssen nur dieses CSS zu der Seite hinzufügen, das ist es – Hemant

+3

Ich benutze Bootstrap 3 und hinzufügen! Wichtig vermasselt die Opazität Übergang. Diese Antwort funktioniert gut, wenn Sie nur das wichtige ausschalten. Hier ist, was ich getan habe: .modal-Hintergrund, .modal-backdrop.fade.in { \t Opazität: 0,5 oder was auch immer Sie wollen; } – dave4jr

9

Sie könnten Bootstrap events nutzen :: als

//when modal opens 
$('#yourModal').on('shown.bs.modal', function (e) { 
    $("#pageContent").css({ opacity: 0.5 }); 
}) 

//when modal closes 
$('#yourModal').on('hidden.bs.modal', function (e) { 
    $("#pageContent").css({ opacity: 1 }); 
}) 
+1

Diese Methode funktionierte gut für Ich auch, ich benutzte eine andere Auswahl für den Hintergrund, nicht sicher über das Bit # pageContent. Dieser Code wurde verwendet, um den Verdunkelungseffekt zu entfernen. ' \t \t $ ("# busy-modal"). Auf ('shown.bs.modal', function (e) { \t \t \t $ ('div.modal-Hintergrund'). Css ('Opazität' 0); \t \t}); \t \t $ ("# busy-modal"). Auf ('hidden.bs.modal', function (e) { \t \t \t $ ('div.modal-Hintergrund'). Css ('Opazität', 0,5); \t \t}); ' –

1

Nach einem Tag des Kampfes habe ich herausgefunden, Höhe: 100% zu .modal-backdrop.in Klasse gearbeitet. Höhe: 100% gemacht Opazität, um die ganze Seite anzuzeigen.

+1

Aber was ist, wenn Sie die Seite als scrollbar haben? Dies würde dann nicht die ganze Seite abdecken – SoulRayder

1

Die Einstellung der Höhe auf 100% wird nicht die Lösung sein, wenn Sie eine Hintergrundseite haben, deren Höhe sich über die Browserhöhe hinaus erstreckt.

Wenn Sie Bhargavis Antwort hinzufügen, ist dies die Lösung, wenn Sie eine scrollbare Seite im Hintergrund haben.

.modal-backdrop.in 
{ 
    opacity:0.5 !important; 
    position:fixed;// This makes it cover the entire scrollable page, not just browser height 
    height:100%; 
} 
1

Wenn Sie die weniger Version verwenden @ modal-Hintergrund-Opazität in Ihren Variablen zu kompilieren Bootstrap ändern Datei $ modal-Hintergrund-Opazität für SCSS außer Kraft setzen.

3

Das Problem beim Überschreiben mit !important ist, dass Sie den Einblendeffekt verlieren.

So ist der tatsächliche beste Trick den Modal-Hintergrund Opazität zu ändern, ohne die fadeIn Wirkung zu brechen und ohne die schamlosen!important zu verwenden ist, diese zu verwenden:

.modal-backdrop{ 
    opacity:0; transition:opacity .2s; 
} 
.modal-backdrop.in{ 
    opacity:.7; 
} 

@sass

.modal-backdrop{ 
    opacity:0; 
    &.in{opacity:.7;} 
} 

Einfach und sauber.

0

Verwendung dieser Code

$("#your_modal_id").on("shown.bs.modal", function(){ 
 
     $('.modal-backdrop.in').css('opacity', '0.9'); 
 
});

1

Nur falls jemand mit Bootstrap 4. Es scheint, dass wir nicht mehr .modal-backdrop.in verwenden können, aber jetzt .modal-backdrop.show verwenden. Fade-Effekt erhalten.

.modal-backdrop.show { 
    opacity: 0.7; 
} 
Verwandte Themen