Centrer verticalement le div dans BxSlider Carousel
Je suis en utilisant bxslider script pour construire un manège. Je peux tout faire bien, je suis juste un problème en essayant d'aligner au centre de la coulisse verticalement, comme ils n'ont pas la même hauteur. J'ai essayé de nombreuses aligner des techniques, mais tous semblent échouer lorsque le bxslider est dans l'action. Voici un jsfiddle exemple.
Actuellement dans l'exemple que j'ai un très simple règle CSS qui fonctionne quand le manège n'est pas définie:
.bxslider-inner {
vertical-align: middle;
display: inline-block;
}
Mais, comme vous pouvez le voir dans le jsfiddle, lorsque le mouvement est actif, l'alignement vertical ne fonctionne plus.
Je commence à soupçonner que je pourrais avoir à changer le code de base du script pour atteindre cet objectif.
source d'informationauteur CMoreira
Vous devez vous connecter pour publier un commentaire.
Mise à jour de votre CSS comme ceci. La clé n'est pas
float
ing l'élément parce que vous êtes toujours en train de faire, ilinline-block
Une chose de plus... Pour le faire correspondre à votre exemple, de changer
slideMargin:20
àslideMargin:10
après avoir fait lafloat: none !important;
Violon: http://jsfiddle.net/sSqAx/9/
CSS tables
Normalement, tant que support pour la version IE7 ou plus tôt n'était pas nécessaire, je suggère l'ajout de
display: table-cell;
(le long des lignes de la question @darthmaim lié ci-dessus):Cependant,
display: table-cell;
ne fonctionne pas sur flottait éléments (testé avec IE8/9/10, Firefox, Safari, Chrome, Opera), comme le montre cette JSFiddle Démo. Dans le question @darthmaim liés à, le parent de l'élément est celui qui flottait; cela fonctionne bien. Ici, l'enfant de l'élément est flottant; qui ne fonctionne pas.Solution de contournement
Si vous modifiez le code source HTML est une option, vous pouvez ajouter un div wrapper à l'intérieur de chaque
.bxslider-inner
de sorte que l'utilisation dedisplay: table-cell;
peut être déplacé à un non-flotté élément: Mise à jour de la démo.Cela suppose que le carrousel conteneur est destiné à avoir une hauteur fixe de
90px
. Soutenir une variable-hauteur du conteneur (qui varie en fonction de la hauteur de la plus haute carrousel élément), nécessitent un travail supplémentaire.JavaScript
Si vous modifiez le code source HTML n'est pas une option, il existe deux solutions à l'aide de JavaScript ou jQuery:
Nous pouvons vertcal aligner une div au centre par l'ajout de "vertical-align:middle" dans le css et en donnant un fixesd hauteur à l'extérieur de la div. OU nous pouvons définir par margin-top ou peut également utiliser haut attribut css
Vous pouvez le faire en ajoutant
top:30px
Ici
vertical-align
ne fonctionne pas parce que dans lebxslider-inner div
il ajoutestyle
de sorte qu'il ne s'applique pasvertical-align
ici. Donc, dans ce cas vous pouvez utilisertop
pour queelement
.Violon http://jsfiddle.net/sSqAx/3/
Définir les valeurs slideMargin:0 et slideWidth: 100
Il fonctionne.
Cela devrait résoudre votre problème:
JSfiddle
Et un avec différentes hauteurs: JSfiddle
HTML
CSS
JavaScript
Garder à l'esprit que le calcul moyen est très dépendant de l'autre la hauteur des variables comme le rembourrage, la marge et les frontières. Si vous ajoutez des styles comme ça, gardez à l'esprit que vous devez ajouter à ceux du calcul. Une autre option est d'utiliser
box-sizing: border-box;
tout cela s'effondre à l'intérieur de la div.bxslider-inner
DOIVENT avoir une hauteur, ou vous avez besoin de quelque sorte chercher le calcul de DOM hauteur de l'éviter. Si vous voulez vraiment, s'il vous plaît laissez une note et je vais le regarder.Bonne chance!
Mise à JOUR