Bootstrap-Modale fügen dem Körper nach dem Schließen immer Füllrecht hinzu
Ich bin mit bootstrap und Analysieren framework zum Aufbau einer kleinen webapp. Aber diejenigen, die Bootstrap-modals halten Sie das hinzufügen, padding-right, um Körper nach geschlossen. Wie man dieses Problem lösen?
Habe ich versucht, diesen code in meine javascript:
$('.modal').on('hide.bs.modal', function (e) {
$("element.style").css("padding-right","0");
});
Aber es funktioniert nicht. Weiß jemand, wie man dieses Problem beheben?
Mein code:
<button type="button" class="btn btn-lg btn-default" data-toggle="modal" data-target="#loginModal">Admin panel</button>
<div id="loginModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-sm">
<!-- Modal content -->
<div class="modal-content">
<!-- header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Login</h4>
</div>
<!-- body -->
<div class="modal-body text-center" >
<input class='form-control' type="text" id="userName" placeholder="Username" ng-model='username'>
<input class='form-control' type="password" id="password" placeholder="Password" ng-model='password'>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="loginButton" ng-click="goToAdminPanel()">Login</button>
<button type="button" class="btn btn-default" data-dismiss="modal" id="closeButton">Close</button>
</div>
</div>
</div>
</div>
</div>
<div id="adminPanel" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content -->
<div class="modal-content">
<!-- header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Admin Panel</h4>
</div>
<!-- body -->
<div class="modal-body" >
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="saveButton">Save</button>
<button type="button" class="btn btn-default" data-dismiss="modal" id="closeButton">Close</button>
</div>
</div>
</div>
</div>
$scope.goToAdminPanel = function(){
Parse.User.logIn($scope.username,$scope.password,{
success: function(user){
$('#loginModal').modal('hide');
$('#adminPanel').modal();
},
error: function(user, error) {
alert('Wrong username and/or password');
}
});
}
Ich bin mit bootstrap und Analysieren framework zum Aufbau einer kleinen webapp. Aber diejenigen, die Bootstrap-modals halten Sie das hinzufügen, padding-right, um Körper nach geschlossen. Wie man dieses Problem lösen? Ich bin mit bootstrap und Analysieren framework zum Aufbau einer kleinen webapp. Aber diejenigen, die Bootstrap-modals halten Sie das hinzufügen, padding-right, um Körper nach geschlossen. Wie man dieses Problem lösen?
padding-right
, sondern auch Klasse als modal-open
für overflow: hidden
, die nur für das verstecken der scroll-Leiste. modal-open
mit padding-right:0 !wichtig;
, aber es funktioniert nicht, weißt du, warum? padding-right
css-Eigenschaft update auf das richtige Ereignis, aber Sie schiesst auf das falsche element. Es muss geschossen werden, die auf der body
- element. Bitte beachten Sie auch meine Antwort unten. InformationsquelleAutor der Frage phuwin | 2015-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte dies ein glitch von Bootstrap-modal. Aus meinen tests, es scheint, das problem ist, dass
#adminPanel
initialisiert wird, während#loginModal
nicht vollständig abgeschlossen. Die workarounds werden kann, entfernen Sie die animation durch das entfernen derfade
Klasse#adminPanel
und#loginModal
oder ein timeout (~500ms) vor dem Aufruf$('#adminPanel').modal();
. Hoffe, das hilft.InformationsquelleAutor der Antwort Orland
Habe ich einfach das css Update unten und es funktioniert für mich
InformationsquelleAutor der Antwort Ngatia Frankline
Fügen Sie einfach einen style wie:
InformationsquelleAutor der Antwort Suge
Wenn du mehr besorgt über die
padding-right
Verwandte Sache, können Sie dies tunjQuery:
diese wird
addClass
zu Ihrembody
und dann dieseCSS:
und dies wird Ihnen helfen, um loszuwerden
padding-right
.Aber wenn Sie sind auch besorgt über das Versteck
scroll
dann musst du auch hinzufügen, auch diese:CSS:
Hier ist die JSFiddle
Bitte haben Sie einen Blick, es wird der trick für Sie.
InformationsquelleAutor der Antwort vivekkupadhyay
Ich hatte das gleiche problem für eine SEHR lange Zeit. Keine der Antworten hier war! Aber die folgenden Feste!
Gibt es zwei Ereignisse, die das Feuer auf das schließen des modalen, zuerst es
hide.bs.modal
, und dann ist eshidden.bs.modal
. Sie sollten in der Lage sein, die Verwendung von nur einem.InformationsquelleAutor der Antwort LXXIII
Öffnen Sie einfach die bootstrap.min.css
Finden diese Zeile (Standard)
.modal-{overflow:hidden;}
ändern und es als
.modal-{overflow:auto;padding-right:0 !wichtig;}
Wird es Arbeit für jeden modal von der Website. Sie können tun overflow:auto; wenn Sie wollen, zu halten, scrollbar, wie es beim öffnen von modalen dialog.
InformationsquelleAutor der Antwort Ashok Sen
Einer reinen css-Lösung, die hält die bootstrap-Funktionalität, wie es sein sollte.
Das problem entsteht durch eine Funktion in der bootstrap, jQuery, fügt ein wenig Polsterung-Recht, wenn ein modales Fenster geöffnet wird, wenn es eine scroll-Leiste auf der Seite. Das hält Ihren Körper-Inhalt verschieben, wenn das modal öffnet, und es ist ein nettes feature. Aber es verursacht diese Fehler.
Viele andere Lösungen, die hier gegeben werden, brechen Sie diese Funktion und Ihre Inhalte shift etwas über, wenn das modal öffnet. Diese Lösung wird die Erhaltung der Funktion der bootstrap-modal-nicht die Verlagerung von Inhalten um, aber den Fehler beheben.
InformationsquelleAutor der Antwort chasmani
Ich gerade entfernt die
fade
Klasse, und ändern Sie die Klasse fade-Effekt mitanimation.css
. Ich hoffe, das wird helfen.InformationsquelleAutor der Antwort febriana andringa
Entfernen Sie einfach die
data-target
vom button und laden Sie die modale Verwendung von jQuery.jQuery:
InformationsquelleAutor der Antwort Edison D'souza
easy fix
fügen Sie diese Klasse
Seine ein override funktioniert aber
InformationsquelleAutor der Antwort Benjamin Oats
Ich weiß, das ist eine alte Frage, aber keine Antworten von hier entfernt, das problem in meinem ähnlichen Situationen und ich dachte, es wäre nützlich für einige Entwickler zu Lesen meine Lösung auch.
Ich verwenden, fügen Sie einige CSS für den Körper, wenn ein modal geöffnet wird, in den Webseiten, wo es ist noch verwendet bootstrap 3.
InformationsquelleAutor der Antwort Madalina Taina
Meine Lösung erfordert keine zusätzlichen CSS.
Wie schon von @Orland, ein event ist immer noch geschieht, wenn der andere beginnt. Meine Lösung ist über den Start der zweiten Veranstaltung (mit der
adminPanel
modal) nur, wenn der erste fertig ist (versteckt denloginModal
modal).Können Sie erreichen, dass durch die Anbringung eines listener-der
hidden.bs.modal
Ereignis in IhremloginModal
modal wie unten:Und, wenn nötig, einfach ausblenden die
loginModal
modal.Natürlich können Sie die Umsetzung Ihrer eigenen Logik in den Hörer, um zu entscheiden, zu zeigen oder nicht die
adminPanel
modal.Können Sie mehr Infos zu Bootstrap Modal Veranstaltungen hier.
Glück.
InformationsquelleAutor der Antwort Cleber de Souza Alcântara
removeAttr wird nicht funktionieren, Sie wird zum entfernen der CSS-Eigenschaft wie folgt:
Ohne Wert der Eigenschaft, die Eigenschaft ist entfernt.
InformationsquelleAutor der Antwort jcdsr
InformationsquelleAutor der Antwort tian
Wühlte ich in die bootstrap-javascript und festgestellt, dass der Modal-code setzt die Rechte Auffüllung in eine Funktion namens
adjustDialog()
definiert ist, auf den Modal prototype und ausgesetzt auf jQuery. Platzieren Sie den folgenden code irgendwo diese Funktion außer Kraft setzen, nichts zu tun hat den trick für mich (obwohl ich nicht weiß, welche Folge die Einstellung nicht dies ist noch!!)$.fn.modal.Constructor.prototype.adjustDialog = function () { };
InformationsquelleAutor der Antwort Phil
Dieser das problem lösen kann
InformationsquelleAutor der Antwort Dinoart
Gleiche problem habe ich mit Bootstrap 3.3.7 und meine Lösung für fixed navbar: dieser Stil Hinzufügen, um Ihre benutzerdefinierten css-Dateien.
wird es Ihre modalen zeigte, während scroll-Fenster noch bearbeitet werden.
vielen Dank, hoffe, dass dies helfen wird, Sie zu
InformationsquelleAutor der Antwort Debrian Ruhut Saragih
Arbeitete für mich. Beachten Sie, dass die Bildlaufleiste ist gezwungen, in der Körper - aber wenn du ein "scrollen" der Seite sowieso, ist es egal (?)
InformationsquelleAutor der Antwort user3666136
Versuchen, diese
Wird es fügen Sie die Polsterung Recht 0px, um den Körper nach der modalen schließen.
InformationsquelleAutor der Antwort sibaspage
Es tritt beim öffnen eines modalen, dass die bisherigen modal ist nicht vollständig abgeschlossen. Um es zu beheben öffnen Sie einfach neue modal an der Zeit, dass alle modal sind komplett geschlossen, überprüfen Sie die folgenden codes:
InformationsquelleAutor der Antwort Sakata Gintoki
Dies ist was für mich gearbeitet:
InformationsquelleAutor der Antwort Jack
(Bootstrap v3.3.7)
Aus meinem browser-Inspektor sah ich, dass dies direkt in den element - Stil Eigenschaft, Hexe überschreibt Eigenschaften der Klasse.
Ich habe versucht, 'reset' der paddig-Recht Wert, wenn das modal mit :
Aber es kommt wieder, sobald das Fenster in der Größe geändert wird 🙁 (probablly aus der das Stopfen Skript).
Diese Lösung bei mir funktioniert :
InformationsquelleAutor der Antwort yorg
Als @Orland sagt, wenn Sie einige Effekte wie fade-dann müssen wir warten vor der Anzeige des modal, dies ist eine etwas hacky, aber wird den trick tun.
InformationsquelleAutor der Antwort netomo
Ich habe so viele Sachen ausprobiert, klappte aber kleine Sache für mich.
InformationsquelleAutor der Antwort Sagar Raut
Dies ist ein bootstrap-bug und gefixt in v4-dev: https://github.com/twbs/bootstrap/pull/18441
bis dann hinzufügen unter CSS-Klasse sollte helfen.
InformationsquelleAutor der Antwort Ruchita Kasliwal
Ich hatte das gleiche problem mit modals und ajax. Es war, weil die JS-Datei, auf die verwiesen wurde zweimal, sowohl in der ersten Seite und in der Seite per ajax aufgerufen, so dass, wenn modal geschlossen wurde, ist es als die JS-Ereignis zweimal, die standardmäßig fügt ein padding-right von 17px.
InformationsquelleAutor der Antwort Lucas Almeida
Bootstrap-Modelle hinzufügen, padding-right, um den Körper, wenn der Körper überfüllt ist.
Bootstrap 3.3.6 (die version die ich verwende) dies ist die Funktion, die verantwortlich für das hinzufügen, dass padding-right für das body-element:
https://github.com/twbs/bootstrap/blob/v3.3.6/dist/js/bootstrap.js#L1180
Eine schnelle Abhilfe ist, einfach überschreiben, dass die Funktion nach dem Aufruf der bootstrap.js Datei:
Diese behoben das Problem für mich.
InformationsquelleAutor der Antwort scottx
Ich hoffe es findet sich noch jemand, der es braucht, diese Antwort. Es gibt eine Funktion namens resetScrollbar() in bootstrap.js für einige dumme Grund der Entwickler entschieden, um die Bildlaufleiste Dimensionen, um die körpereigene Polsterung Recht. so technisch, wenn Sie nur auf rechts-Polsterung, um eine leere Zeichenfolge, wird es das problem zu beheben
InformationsquelleAutor der Antwort wkirk
dies sollte das Problem beheben
InformationsquelleAutor der Antwort david
Set absolute positiong auf den Körper:
Damit die Polsterung nicht mehr auf den Körper.
InformationsquelleAutor der Antwort Gustavo Gregianin