Ich habe ein Problem mit einem Modal. Ich habe eine Schaltfläche auf einer Seite, die das Modal umschaltet. Wenn das Modal angezeigt wird, springt die Seite nach oben.
Ich habe alles getan, um eine Lösung zu finden, aber ich bin wirklich verloren.
BEARBEITEN:
Ich habe es auch mit versucht: $('#myModal').modal('show');
aber es hat genau den gleichen Effekt.
window
dass das Modal ausgelöst wird, wenn ich irgendwo darauf klicke. Das scheint seltsam und unerwartet. Ich habe diebutton
via devtools entfernt und durch Klicken auf eine beliebige Stelle auf der Seite wurde immer noch das modale Fenster geöffnet. War das gewünschtes Verhalten? Ich frage mich, ob Sie nicht den richtigen Selektor für das modale Klickereignis haben.Antworten:
Wenn das Modal geöffnet wird, wird eine
modal-open
Klasse auf das<body>
Tag gesetzt. Diese Klasse setztoverflow: hidden;
auf den Körper. Fügen Sie diese Regel Ihrem Stylesheet hinzu, um den Stil bootstrap.css zu überschreiben:Jetzt sollte die Schriftrolle an Ort und Stelle bleiben.
quelle
.modal('show')
und es rollt immer noch zum Anfang der Seite. Bootstrap v3.2.0position: inherit
dieser Klasse hinzufügen , arbeitete danach aber wie ein Zauber.Wenn Sie modal mit Tag anrufen. Versuchen Sie, '#' aus dem href-Attribut zu entfernen. Rufen Sie modal mit Datenattributen auf.
quelle
Wenn Sie das Ankertag als verwenden
<a href"#" ..> ... </a>
und einhref="#"
Problem erstellen, entfernen Sie dieses. Sie können mehr darüber lesen hierquelle
Dies wird Ihnen helfen, die Bildlaufleiste oben zu stoppen. Es hat bei mir funktioniert
quelle
Möglicherweise arbeiten Sie mit Modalen, die irgendwo im Code verschachtelt sind:
Für mich war es eine Kombination aus Position, Höhe und Überlauf.
quelle
Ich sehe keinen bestimmten Fehler, aber ich würde Ihnen raten, Ihre HTML-Syntax zu überprüfen .
Ein kleiner Test mit Ihrer Quelle gibt mir Fehler wie
Dies könnte ein Problem sein.
quelle
Der einfachste Weg, den springenden Hintergrund zu lösen, besteht darin, zwei Parameter zu definieren:
quelle
Ich habe versucht, dieses Problem auf meinem lokalen Host zu replizieren, und so seltsam es auch scheinen mag, es liegt ein Konflikt mit der von Ihnen verwendeten Bootstrap JS-Datei vor.
Versuchen Sie, Ihren Code zu kommentieren:
Verwenden Sie stattdessen Bootstrap 2.3.2:
Das hat es für mich funktionieren lassen.
Ich habe es mit Bootstrap Version 3 versucht, aber das hat nicht funktioniert. Ich kann den Problemteil immer noch nicht genau bestimmen, aber irgendwo in Firebug ist mir ein
e.preventDefault() is not a function
Fehler aufgetreten. Ich vermute, dass dies die Hauptursache sein sollte, aber ich muss ihn noch mit den anderen JS-Dateien vergleichen.quelle
Ich habe versucht, .modal oben in die Mitte des Bildschirms zu setzen.
Nur meine 2 Cent Gedanken.
quelle
In Bootstrap 3.1.1 habe ich mit folgender Lösung gelöst:
quelle
Sie haben 2 zusätzliche schließende
div
Tags kurz vor<div id="footer">
oder nach dem<div id="mainFrame" class="group">
div. Ich benutze Visual Studio 2012 Express, um dies zu überprüfen.Bitte entfernen Sie diese 2 zusätzlichen Divs und lassen Sie uns wissen, wie es funktioniert. Ich habe zusätzliche Divs entfernt und alle benutzerdefinierten Skripte entfernt. nur jquery core und bootstrap in der footer beibehalten. Hier ist der Screenshot der endgültigen Ausgabe. Hier ist der JSBIN-Spielplatz für Sie, der gut funktioniert.
Ich empfehle Ihnen, headjs zu verwenden, um alle Skripte und CSS-Dateien zu laden. Es ist auch keine gute Praxis, Skripte zweimal zu laden.
quelle
Versuchen Sie dies, um Modal zu öffnen und zu sehen, was passiert:
quelle
Ich brauchte das wichtige Attribut, um es zu beheben
quelle
Ich hatte das gleiche Problem mit Bootstrap 2.3.2
Es war ein Problem beim Klicken auf einen Link:
Der Trick war: return false;
und die js:
quelle
Ich habe Stunden damit verbracht, alles hier und anderswo auszuprobieren. Es stellte sich heraus, dass ich für die Verwendung von AngularJS-Material die Animation auf dem Konfigurationsobjekt arg uibModal.open deaktivieren musste.
Beispielsweise:
Hoffe das hilft jemand anderem.
quelle
Wenn Sie in einem Angular-Programm auf dieses Problem stoßen, fügen Sie den folgenden Code in die erste Zeile der .scss-Datei ein.
quelle
Ich hatte das gleiche Problem und ich denke, ich finde es heraus. Sie müssen nur den modalen HTML-Code als direktes untergeordnetes Element des Body-Tags platzieren ! Sie können den HTML-Code für die Schaltfläche, die das Modal auslöst, an einer beliebigen Stelle platzieren. Ich glaube, dies vermeidet CSS-Vererbungs- und Positionsprobleme, die dieses Problem auslösen.
Beispiel:
quelle
Endlich herausgefunden. Wickeln Sie die Schaltfläche, die auf das Modal abzielt, NICHT in ein Ankertag.
Schlecht
Gut
quelle
Dieser hat es für mich getan
quelle
Nachdem ich über mehrere Stunden Dutzende Antworten gelesen hatte, kopierte ich den Originalcode erneut aus der Bootstrap-Datei und debuggte Schritt für Schritt, um zu sehen, warum ich immer nach oben springe. Weil die aktuellste Version von Bootstrap 3 das Modal an der Position anzeigt, an der Sie sich gerade befinden. Ich hatte das herausgefunden
-webkit-transform: translate3d(0,0,0);
undheight: 100%
in meinem CSS-Body-Tag dieses Verhalten verursacht. Vielleicht hilft das jemandem.quelle
Für mich funktioniert, wenn ich die Version von 3.1.1 auf 3.3.7 geändert habe
Wenn Sie Version 3.3.1 nicht verwenden müssen, versuchen Sie es zu ersetzen.
Nach der Änderung sollten Sie überprüfen, ob der Rest der Funktion ordnungsgemäß funktioniert.
quelle
body.modal-open { position: inherit; }
Das hat für mich wie ein Zauber gewirkt.
quelle
Ich habe alle oben genannten Beispiele ausprobiert - dies ist das einzige, was für mich funktioniert hat:
Entfernen der Polsterung von der rechten Seite des Modells - verhindert den Sprung.
quelle
Höhe: 100% ist Problem zu lösen, aber Sie müssen korrekte "div" hinzufügen
quelle
Ich habe das gleiche Problem und keine der Antworten hat mir geholfen. Ich habe eine Problemumgehung gefunden, die dumm aussieht, aber zumindest in meinem Fall funktioniert.
Ich habe festgestellt, dass die Seite nur einmal nach oben gescrollt wird und danach die nächsten geöffneten Modalitäten wie erwartet funktionieren. Dann habe ich festgestellt, dass das Verstecken eines Elements im DOM dieselbe seltsame Schriftrolle auslöst. Also habe ich nach dem Laden der Seite nur ein Dummy-Div erstellt, als es auszublenden und zu entfernen, und das hat das Problem gelöst.
quelle
Ich stand vor dem gleichen Problem. Das Problem war, dass ich HTML- und Body-Elementen die Klasse .modal-open hinzufügte. Fügen Sie diese Klasse einfach dem Körper hinzu und alles funktioniert wie erwartet.
quelle
Versuchen Sie dies, es funktioniert perfekt
quelle
Es ist eine gute Idee, es zu reparieren. Es sieht aus wie ein Schotte!
https://github.com/jschr/bootstrap-modal/issues/131#issuecomment-153405449
quelle
Wenn die Antwort von pstenstrm bei Ihnen nicht funktioniert, kombinieren Sie sie mit diesem HTML-Ersatzknopf:
Dadurch sollte die Schaltfläche auf dem Bildschirm angezeigt werden.
quelle