Mam problem z modalem. Mam przycisk na stronie, który przełącza tryb. Kiedy pojawi się modal, strona przeskakuje na górę.
Zrobiłem wszystko, co mogłem, aby znaleźć rozwiązanie / itp., Ale jestem naprawdę zagubiony.
EDYTOWAĆ:
Próbowałem też z: $('#myModal').modal('show');
ale ma dokładnie ten sam efekt.
window
, modal odpala. To wydaje się dziwne i nieoczekiwane. Usunąłembutton
poprzez DevTools, a kliknięcie w dowolnym miejscu na stronie nadal otworzył okno modalne. Czy to pożądane zachowanie? Zastanawiam się, czy nie masz odpowiedniego selektora dla zdarzenia kliknięcia modalnego.Odpowiedzi:
Kiedy modal otwiera się,
modal-open
klasa jest ustawiana na<body>
tag. Ta klasa ustawiaoverflow: hidden;
się na ciało. Dodaj tę regułę do swojego arkusza stylów, aby zastąpić styl bootstrap.css:Teraz zwój powinien pozostać na swoim miejscu.
źródło
.modal('show')
i nadal przewija się na górę strony. Bootstrap v3.2.0position: inherit
tej klasy, ale potem działałem jak urok.Jeśli dzwonisz modal z tagiem. Spróbuj usunąć '#' z atrybutu href i wywołaj modalne z atrybutami danych.
źródło
jeśli używasz tagu kotwicy jako
<a href"#" ..> ... </a>
ihref="#"
tworzy problem, usuń go. Możesz przeczytać więcej tutajźródło
Pomoże ci to zatrzymać przesuwający się pasek przewijania na górze
źródło
Prawdopodobnie działa z modalami zagnieżdżonymi gdzieś w kodzie:
Dla mnie było to połączenie pozycji, wysokości i przepełnienia.
źródło
Nie widzę konkretnego błędu, ale radziłbym sprawdzić składnię html .
Mały test z twoim źródłem daje mi błędy takie jak
To może być problem.
źródło
Najłatwiejszym sposobem rozwiązania tła skoków jest zdefiniowanie dwóch parametrów:
źródło
Próbowałem odtworzyć ten problem na moim hoście lokalnym i choć może się to wydawać dziwne, występuje konflikt z plikiem Bootstrap JS, którego używasz.
Spróbuj skomentować swój kod:
Zamiast tego użyj Bootstrap 2.3.2:
To sprawiło, że dla mnie zadziałało.
Wypróbowałem to z Bootstrap w wersji 3, ale to nie zadziałało. Nadal nie jestem w stanie wskazać części
e.preventDefault() is not a function
powodującej problem, ale gdzieś po tym Firebug wyrzucił mi błąd - przypuszczam, że to powinno być główną przyczyną, ale jeszcze nie porównałem tego z innymi plikami JS.źródło
Próbowałem ustawić .modal top na środku ekranu.
Tylko moje 2 centy myśli.
źródło
W bootstrap 3.1.1 rozwiązałem tym rozwiązaniem:
źródło
masz 2 dodatkowe
div
znaczniki zamykające tuż przed<div id="footer">
lub po<div id="mainFrame" class="group">
elemencie div. Używam programu Visual Studio 2012 Express, aby to sprawdzić.Usuń te 2 dodatkowe elementy div i daj nam znać, jak to działa. Usunąłem dodatkowe elementy div i wszystkie niestandardowe skrypty. zachował tylko rdzeń jquery i bootstrap w stopce. tutaj jest zrzut ekranu końcowego wyniku. oto plac zabaw jsbin, który działa dobrze.
Proponuję użyć headjs do załadowania wszystkich skryptów i plików css. również nie jest dobrą praktyką dwukrotne ładowanie jakichkolwiek skryptów.
źródło
Spróbuj użyć tego, aby otworzyć modalne i zobaczyć, co się stanie:
źródło
Potrzebowałem ważnego atrybutu, aby to naprawić
źródło
Miałem ten sam problem, używając Bootstrap 2.3.2
Problem z kliknięciem linku:
Sztuczka była taka: powrót fałszywy;
i js:
źródło
Spędziłem nad tym wiele godzin próbując wszystkiego tutaj i gdzie indziej. W przypadku użycia angularjs-material okazało się, że musiałem wyłączyć animację w argumencie konfiguracyjnym obiektu uibModal.open.
Na przykład:
Mam nadzieję, że to pomoże komuś innemu.
źródło
Jeśli napotykasz ten problem w programie Angular, dodaj poniższy kod w pierwszym wierszu pliku .scss.
źródło
Miałem ten sam problem i myślę, że go rozgryzam. Musisz tylko umieścić modalny kod HTML jako bezpośrednie dziecko tagu body ! Możesz jednak umieścić kod HTML dla przycisku uruchamiającego tryb modalny, gdziekolwiek potrzebujesz. Uważam, że pozwala to uniknąć dziedziczenia CSS i problemów z pozycją, które powodują ten problem.
Przykład:
źródło
W końcu to rozgryzłem. NIE zawijaj przycisku wskazującego modal tagiem kotwicy.
Zły
Dobry
źródło
Ten zrobił to dla mnie
źródło
Po przeczytaniu kilkudziesięciu odpowiedzi w ciągu kilku godzin ponownie skopiowałem oryginalny kod z pliku bootstrap i debugowałem krok po kroku, aby zobaczyć, co spowodowało, że zawsze skaczę na górę. Ponieważ aktualna najnowsza wersja Bootstrap 3 pokazuje modalne w pozycji, w której się teraz znajdujesz. Dowiedziałem się o tym
-webkit-transform: translate3d(0,0,0);
iwheight: 100%
moim tagu body css spowodowało to zachowanie. Może to komuś pomoże.źródło
U mnie działa, gdy zmieniłem wersję z 3.1.1 na 3.3.7
Jeśli nie musisz używać wersji 3.3.1, spróbuj zastąpić.
Po zmianie dobrze jest sprawdzić , czy reszta funkcji działa poprawnie.
źródło
body.modal-open { position: inherit; }
To zadziałało na mnie jak urok.
źródło
Wypróbowałem wszystkie powyższe przykłady - to jedyna rzecz, która u mnie zadziałała:
Zdjęcie wyściółki z prawej strony modelu - zapobiega skokowi.
źródło
wysokość: 100% rozwiązuje problem, ale musisz dodać poprawne "div"
źródło
Mam ten sam problem i żadna z odpowiedzi mi nie pomogła. Znalazłem obejście, które wygląda głupio, ale działa przynajmniej w moim przypadku.
Zauważyłem, że strona przewija się na górę tylko raz, a potem kolejne otwarte modały działają zgodnie z oczekiwaniami. Wtedy odkryłem, że ukrycie dowolnego elementu w DOM inicjuje ten sam dziwny zwój. Po prostu utworzyłem fikcyjny element div po załadowaniu strony, a potem go ukryłem i usunąłem, co rozwiązało problem.
źródło
Miałem ten sam problem. Problem polegał na tym, że dodałem klasę .modal-open do elementów HTML i body. Po prostu dodaj tę klasę do ciała i wszystko działa zgodnie z oczekiwaniami.
źródło
Spróbuj tego, działa idealnie
źródło
to dobry pomysł, żeby to naprawić, wygląda jak sportowiec!
https://github.com/jschr/bootstrap-modal/issues/131#issuecomment-153405449
źródło
Jeśli odpowiedź pstenstrm nie działa dla Ciebie, spróbuj połączyć ją z tym zamiennikiem HTML:
Powinno to utrzymać przycisk na ekranie.
źródło