Vertikal zentrieren-align div in BxSlider Karussell
Ich bin mit bxslider Skript zu bauen ein Karussell. Ich kann alles gut, ich bin nur ein problem versuchen zu richten, um die Mitte der Folien senkrecht, da Sie nicht die gleiche Höhe haben. Ich habe versucht, zahlreiche ausrichten Techniken, aber alle scheinen zu Versagen, wenn der bxslider ist in Aktion. Hier ist ein jsfiddle-Beispiel.
Derzeit im Beispiel habe ich eine sehr einfache CSS-Regel, die funktioniert, wenn sich das Karussell nicht gesetzt werden:
.bxslider-inner {
vertical-align: middle;
display: inline-block;
}
Aber, wie Sie sehen können, in der jsfiddle, wenn das Karussell aktiv ist, wird die vertikale Ausrichtung funktioniert nicht mehr.
Bin ich langsam den Verdacht ich hätte zu ändern, der Kern-code der script um dies zu erreichen.
Ich habe eine neue Antwort, ich hoffe, es passt Ihre Bedürfnisse. Viel Glück!
InformationsquelleAutor CMoreira | 2013-03-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisieren Sie Ihre CSS wie dieses. Der Schlüssel ist nicht
float
ing das element, weil Sie immerinline-block
Eine Sache... Um es passend zu Ihrem Beispiel, ändern
slideMargin:20
zuslideMargin:10
nachdem Sie das getan habenfloat: none !important;
Fiddle: http://jsfiddle.net/sSqAx/9/
!important
, aber ein schönes, sauberes Update. +1Wenn die Schleife durch das Karussell, ich sehe das Leerzeichen zwischen einige Elemente ausblenden und wieder zu bestimmten Zeiten. Es passiert in allen Browsern. Sie wird verursacht durch die implizite 4px oder so Platz zwischen
inline-block
Elementen, die die Leerräume zwischen Ihnen. Diese Lösung erfordert möglicherweise die HTML-Bearbeitung zu entfernen Sie alle Leerzeichen zwischen den tags für die.bxslider-inner
Elemente (wenn es das ist eine option), und re-justiert den Wert derslideMargin
. Aktualisierte demo.Eigentlich nicht... Es ist korrekt wiedergegeben statt und das hinzufügen von mehr Platz benötigt, da vor dem JS wurde das hinzufügen von 100px Breite, wo in der hardcoded HTML-wahre Breite von 90px. So müssen Sie zum anpassen der Breite oder der Marge in der JS gleich eine insgesamt 90px anstelle von 100px.
Uau, schöne und saubere Lösung! Sehr einfach zu implementieren und es funktioniert auch auf meinem realen Umsetzung des Kodex. Ich habe noch zu überprüfen, ein bisschen besser das slideMargins und Polster und andere Sachen, aber die vertikale Ausrichtung ist eine gute Arbeit! Vielen Dank dafür!!!!
"float: none" ... der Mensch, dies rettete mein Leben. ich wurde auf dieses problem für einen ganzen Tag ... :-P. THX a lot!
InformationsquelleAutor doitlikejustin
CSS-Tabellen
Normalerweise, solange die Unterstützung für IE7 oder früher war nicht nötig, ich würde vorschlagen, hinzufügen von
display: table-cell;
(entlang der Linien von der Frage @darthmaim im Zusammenhang mit oben):Jedoch
display: table-cell;
funktioniert nicht auf den gefloateten Elementen (getestet in IE8/9/10, Firefox, Safari, Chrome, Opera), wie in diesem JSFiddle Demo. In der Frage @darthmaim verbunden, die das übergeordnete Element des Elements ist derjenige, der schwebte; das funktioniert auch. Hier wird das child-element schwebte; das funktioniert nicht.Abhilfe
Wenn die Bearbeitung des HTML-Quellcodes ist eine option, können Sie fügen Sie ein div-wrapper in jedem
.bxslider-inner
, so dass die Verwendung vondisplay: table-cell;
können verschoben werden, um eine nicht-gefloateten-element: Aktualisierte demo.Dies setzt Voraus, dass die carousel-container ist beabsichtigt, eine Feste Höhe von
90px
. Unterstützt eine variable Höhe-container (die variiert, basierend auf der Höhe der höchsten Karussell-element), würde erfordern zusätzliche Arbeit.JavaScript
Wenn die Bearbeitung des HTML-Quellcodes ist nicht eine option, es gibt zwei Lösungen mit JavaScript oder jQuery:
InformationsquelleAutor Matt Coughlin
Können wir vertcal Ausrichtung eines div-Zentrum durch hinzufügen von "vertical-align:middle" in css und geben ein fixesd Höhe des äußeren div. ODER wir festlegen können, indem Sie margin-top oder können auch top - Attribut in css
InformationsquelleAutor Vish
Können Sie es durch hinzufügen
top:30px
Hier
vertical-align
hat nicht funktioniert, weil in derbxslider-inner div
es fügt zusätzlichestyle
damit es nicht anwendenvertical-align
hier. Also, in diesem Fall können Sietop
für daselement
.Fiddle http://jsfiddle.net/sSqAx/3/
InformationsquelleAutor Rohan Kumar
Setzen Sie die Werte slideMargin:0 und slideWidth: 100
Es funktioniert.
InformationsquelleAutor Hassaan
Dieser sollte dein problem lösen:
JSfiddle
Und eine mit verschiedenen Höhen: JSfiddle
HTML
CSS
JavaScript
Beachten Sie, dass die berechnete mittlere ist sehr abhängig von anderen die Höhe der Variablen wie padding, margin und Grenzen. Wenn Sie fügen Sie Stile hinzu, wie, dass, Bedenken Sie, dass Sie benötigen, fügen Sie diese in die Berechnung ein. Eine weitere option ist die Verwendung
box-sizing: border-box;
, also all das bricht auf der Innenseite der div.bxslider-inner
MUSS eine Höhe, oder Sie müssen irgendwie Holen die berechneten DOM-Höhe zu vermeiden. Wenn Sie wirklich wollen, lassen Sie bitte eine Anmerkung und ich werde das prüfen.Glück!
UPDATE
InformationsquelleAutor