Użyłem kodu dla mojego modalu prosto z przykładu Bootstrap i dołączyłem tylko bootstrap.js (a nie bootstrap-modal.js). Jednak mój modal pojawia się pod szarym odcieniem (tło) i nie można go edytować.
Oto jak to wygląda:
Zobacz to skrzypce dla jednego poznać sposobów na odtworzenie tego problemu. Podstawowa struktura tego kodu jest następująca:
<body>
<p>Lorem ipsum dolor sit amet.</p>
<div class="my-module">
This container contains the modal code.
<div class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">Modal</div>
</div>
</div>
</div>
</div>
</body>
body {
padding-top: 50px;
}
.my-module {
position: fixed;
top: 0;
left: 0;
}
Wszelkie pomysły, dlaczego to jest lub co mogę zrobić, aby to naprawić?
javascript
css
twitter-bootstrap
modal-dialog
natlines
źródło
źródło
overflow-x: hidden
zastosowanie do kontenera modalu.Odpowiedzi:
Jeśli kontener modalny ma ustaloną lub względną pozycję lub znajduje się w elemencie o ustalonej lub względnej pozycji, takie zachowanie nastąpi.
Upewnij się, że kontener modalny i wszystkie jego elementy nadrzędne są ustawione jako domyślny sposób rozwiązania problemu.
Oto kilka sposobów, aby to zrobić:
</body>
.position:
właściwości CSS z modalu i jego przodków, dopóki problem nie zniknie. Może to jednak zmienić wygląd i działanie strony.źródło
</body>
i niebody
mam żadnegoposition
atrybutu stylu. Jakiś inny pomysł?Problem dotyczy pozycjonowania kontenerów nadrzędnych. Możesz łatwo „przenieść” swój modal z tych kontenerów przed jego wyświetleniem. Oto jak to zrobić, jeśli
show
korzystasz z modalu za pomocą js:Lub, jeśli uruchamiasz modal za pomocą przycisków, upuść
.modal('show');
i po prostu wykonaj:Pozwoli to zachować normalną funkcjonalność, umożliwiając pokazanie modalu za pomocą przycisku.
źródło
$('.modal-dialog').parent().on('show.bs.modal', function(e){ $(e.relatedTarget.attributes['data-target'].value).appendTo('body'); })
Wypróbowałem wszystkie opcje podane powyżej, ale nie udało mi się z nich skorzystać.
Co zadziałało: ustawienie indeksu Z dla .modal-backdrop na -1.
źródło
z-index: 0;
-1
tak, aby wyświetlało się za innymi elementami na stronie, takimi jak panele. Ale ustawienie go tak, aby3
było ponad wszystkim oprócz modalnego wyskakującego okienka.Upewnij się również, że wersje BootStrap css i js są takie same. Różne wersje mogą również wyświetlać modalne pod tłem:
Na przykład:
Zły:
Dobrze:
źródło
Zetknąłem się również z tym problemem i żadne z rozwiązań nie zadziałało, dopóki nie zorientowałem się, że właściwie nie potrzebuję tła. Możesz łatwo usunąć tło za pomocą poniższego kodu.
Uwaga :
data-backdrop
atrybut należy ustawić nafalse
( inne opcje :static
lubtrue
).źródło
Sprawiłem, że zadziałało, podając wysoką wartość wskaźnika Z do okna modalnego PO jego otwarciu. Na przykład:
źródło
Rozwiązanie dostarczone przez @Muhd jest najlepszym sposobem na to. Ale jeśli utkniesz w sytuacji, w której zmiana struktury strony nie jest opcją, skorzystaj z tej sztuczki:
Sztuczka tutaj jest
data-backdrop="false" style="background-color: rgba(0, 0, 0, 0.5);"
na usunięciu domyślnego tła i stworzeniu fikcyjnego, poprzez ustawienie koloru tła samego okna dialogowego za pomocą alfa.Aktualizacja 1: Jak zauważył @Gustyn, że kliknięcie w tło nie zamyka okna dialogowego zgodnie z oczekiwaniami. Aby to osiągnąć, musisz dodać kod skryptu Java. Oto kilka przykładów, jak możesz to osiągnąć.
źródło
Ale późno, ale tutaj jest ogólne rozwiązanie -
Odwiedź ten link - Bootstrap 3 - modalne znikanie poniżej tła, gdy używasz stałego paska bocznego, aby uzyskać szczegółowe informacje.
źródło
Innym sposobem podejścia do tego jest usunięcie indeksu Z z
.modal-backdrop
pliku bootstrap.css. Spowoduje to, że tło będzie na tym samym poziomie, co reszta twojego ciała (nadal będzie zanikać), a twój modal będzie na szczycie..modal-backdrop
wygląda takźródło
Wystarczy dodać dwie linie CSS:
Tło .modal powinno mieć wartość 1050, aby ustawić je nad paskiem nawigacyjnym.
źródło
position: fixed
to, to nie zadziała.To obejmie wszystkie modały bez zepsucia animacji lub oczekiwanego zachowania.
źródło
Po prostu ustawiłem:
i działa ....
W przypadku pierwotnego pytania:
źródło
Użyj tego w swoim module:
źródło
Problem ten często występuje podczas korzystania z elementów takich jak gradienty w CSS dla elementów takich jak tła, a nawet nagłówki akordeonów.
Niestety modyfikowanie lub zastępowanie rdzenia Bootstrap CSS jest niepożądane i może prowadzić do niepożądanych efektów ubocznych. Najmniej inwazyjne podejście polega na dodaniu,
data-backdrop="false"
ale możesz zauważyć, że efekt zanikania nie działa już zgodnie z oczekiwaniami.Po ostatnich wydaniach Bootstrap, wersja 3.3.5 wydaje się rozwiązać ten problem bez niepożądanych efektów ubocznych.
Pobieranie: https://github.com/twbs/bootstrap/releases/download/v3.3.5/bootstrap-3.3.5-dist.zip
Pamiętaj, aby dołączyć pliki CSS i JavaScript z 3.3.5.
źródło
Cześć, miałem ten sam problem, ale zdaję sobie sprawę, że kiedy używasz Bootsrap 3.1 W przeciwieństwie do starszych wersji Bootsrap (2.3.2), struktura html modalu została zmieniona!
musisz owinąć swój modalny nagłówek i stopkę modal-dialog i modal-content
źródło
żadne z sugerowanych powyżej rozwiązań nie działało dla mnie, ale ta technika rozwiązała problem:
źródło
Miałem ten problem i najłatwiejszym sposobem, aby go naprawić, był addind z-index większy niż 1040 na div modal-dialog:
Wierzę, że bootstrap tworzy efekt modalnego tła div, w którym w moim przypadku ma indeks Z 1040, więc jeśli umieścisz na nim modalne okno dialogowe, nie powinno być już szare.
źródło
Mam lżejsze i lepsze rozwiązanie ..
Można to łatwo rozwiązać za pomocą dodatkowych stylów CSS.
ukryj klasę
.modal-backdrop
(automatycznie generowane z Bootstrap.js)ustaw tło
.modal
półprzezroczystego czarnego tła.Działa to najlepiej, jeśli masz wymaganie, aby modal znajdował się wewnątrz elementu, a nie w pobliżu
</body>
znacznika.źródło
ustaw najwyższą wartość dla indeksu Z.modal
Na przykład .sidebarwrapper ma indeks Z wynoszący 1100, więc ustaw indeks Z .modal na 1101
źródło
W moim przypadku rozwiąż to, dodaj to do mojego arkusza stylów:
za pomocą debugera Google może badać element BACKDROP i modyfikować atrybuty. Powodzenia.
źródło
w pasku nawigacyjnym
navbar-fixed-top
potrzebujesz,z-index = 1041
a także, jeśli używaszbootstarp-combined.min.css
również zmiany.navbar-fixed-top, .navbar-fixed-bottom
z-index to 1041
źródło
Zmień pozycję bezwzględną na względną.
źródło
Możesz także usunąć indeks Z z .modal-background. Wynikowy css wyglądałby tak.
źródło
Usunąłem modalne tło.
To nie jest lepsze rozwiązanie, ale działa dla mnie.
źródło
to co znajduję to:
w bootstrap 3.3.0 to nie jest poprawne, ale gdy w bootstrap 3.3.5 jest w porządku. zobacz kod. 3.3.0:
3.3.5
źródło
Dodaj to do stron. To działa dla mnie.
źródło
Naprawiłem to, dodając styl poniżej do tagu DIV
I dodaj niestandardowy css
źródło
źródło
Dla mnie najprostszym rozwiązaniem było umieszczenie mojego modalu w opakowaniu z pozycją bezwzględną i wskaźnikiem Z wyższym niż .modal-background. Ponieważ tło modalne (przynajmniej w moim przypadku) ma indeks Z 1050:
źródło
W moim przypadku miałem opakowanie z następującymi elementami:
Usunąłem tylko indeks Z: 1 i nie mam pojęcia, dlaczego naprawiono problem. też na pewno usunąłem względną pozycję, ale jej potrzebowałem.
źródło