2015-01-22 11 views
24

Używam modala ładowania początkowego. Kiedy modalny jest otwarty, krycie treści w tle nie jest domyślnie zmieniane. Próbuję zmienić w js użyciuJak zmienić tło Krycie, gdy otwarty jest mod bootstrap

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

}

To działa, ale kiedy modalna jest zamknięty styl krycie nadal pozostaje dla pageContent. Ale jestem pewien, że nie jest to właściwy sposób postępowania. Każda pomoc doceniona. Dzięki. przycisk HTML, który otwiera modalnych jest

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

Kod Modal jest

<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:

modal-backdrop div

+0

Dzięki za odpowiedzi. Próbowałem wszystkich, ale nadal nie działa. Stwierdziłem w narzędziach programistycznych modal-backdrop div dodane poza tagiem formularza, gdy modal jest otwarty, nie jestem pewien, czy to jest przyczyną. Dodano obraz do pytania. – Bhargavi

Odpowiedz

45

jestem zakładając chcesz ustawić krycie modalnego tle ..

Ustaw przezroczystość za pośrednictwem CSS

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

!important zapobiega zmętnienie przed zastąpieniem - zwłaszcza z Bootstrap w tym kontekście.

+0

Jeśli to zrobię, nawet modal jest przezroczysty po otwarciu. Ale przypomniałeś mi o dodaniu klasy modal-backdrop do modalnego diva. Po tym teraz tło jest czarne zamiast przezroczystego. – Bhargavi

+1

Nie dodawaj modalnego tła do modalnego elementu div. Tło modalne jest klasą, której bootstrap używa dla tła, na którym pojawia się modal. Trzeba tylko dodać ten CSS do strony, to jest to – Hemant

+3

Używam Bootstrap 3 i dodawanie! Ważnych mesów do przejścia przez krycie. Ta odpowiedź działa świetnie, jeśli po prostu zdejmiesz ważne. Oto co zrobiłem: .modal-backdrop, .modal-backdrop.fade.in { \t krycie: .5 lub cokolwiek chcesz; } – dave4jr

9

można wykorzystać bootstrap events :: jak

//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

Ta metoda działała dobrze dla ja również, użyłem innego wyboru dla tła, nie jestem pewien co do fragmentu #pageContent. Ten kod został użyty do usunięcia efektu ciemnienia. ' \t \t $ ("# zajęty-modal"). Na ('shown.bs.modal', function (e) { \t \t \t $ ('div.modal-tło'). Css ('opacity' , 0); \t \t}); \t \t $ ("# zajęty multimodalny"). Od ('hidden.bs.modal', funkcja (e) { \t \t \t $ ('div.modal-tło'). Css ('zmętnienie' 0,5); \t \t}); ' –

1

Po dniu zmagań zorientowałem się, że wysokość ustawienia: 100% do klasy .modal-backdrop.in działało. height: 100% nieprzezroczystości pokazującej całą stronę.

+1

Ale co, jeśli masz stronę jako przewijaną? To nie obejmowałoby wtedy całej strony – SoulRayder

1

Po prostu ustawienie wysokości na 100% nie będzie rozwiązaniem, jeśli masz stronę w tle, której wysokość wykracza poza wysokość przeglądarki.

Dodając do odpowiedzi Bhargawi, jest to rozwiązanie, gdy masz przewijaną stronę w tle.

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

Jeśli używasz mniejszą wersję kompilacji Bootstrap modyfikować @ modalne-backdrop-krycie w zmiennych nadpisać plik $ modalne-backdrop-krycie SCSS.

3

Problem z nadpisaniem za pomocą !important polega na tym, że utracisz efekt zaniknięcia efektu.

więc rzeczywista najlepszy trik, aby zmienić krycie modal-backdrop bez zerwania efekt fadeIn i bez konieczności korzystania z bezwstydną!important jest użycie w tym:

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

@sass

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

Prosty i czysty.

0

użyć tego kodu

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

1

Tylko w przypadku, gdy ktoś korzysta Bootstrap 4. Wydaje się, że nie możemy już używać .modal-backdrop.in, ale musi teraz używać .modal-backdrop.show. Zniknął efekt zanikania.

.modal-backdrop.show { 
    opacity: 0.7; 
} 
Powiązane problemy