Centre D'alignement Vertical dans Bootstrap 4

j'essaie de centrer mon conteneur au milieu de la page en utilisant Bootstrap 4. J'ai été infructueuses jusqu'à présent. Toute aide serait appréciée.

Je l'ai construit à Codepen.io pour que vous puissiez jouer avec et me dire ce qui fonctionne comme je suis sur hors des idées...

Edit - [ANSWER]

L'ajout de ce qui suit au haut de ma CSS a corrigé le problème:

html, body {
  height:100%;
}
body {
  display:flex;
  align-items:center;
}

aussi, dans Bootstrap 4:

ajouter les classes d-flex align-items-center h-100 au parent résout également le problème et est une approche plus Bootstrappy . Notez que cela fait la même chose que l'approche susmentionnée.

résolu grâce à @Pete, @ZimSystems ainsi que d'autres""

118
demandé sur canaan seaton 2017-02-15 17:42:13

7 réponses

Important! centre Vertical relatif à la hauteur du parent

si le parent de l'élément votre essai de Centre n'a pas défini hauteur , aucune des solutions de centrage vertical fonctionneront!

maintenant, sur le centrage vertical dans le Bootstrap 4...

vous pouvez utiliser le nouveau flexbox & size utilities pour faire le container pleine hauteur et display: flex . Ces options ne nécessitent pas de CSS supplémentaire (sauf que la hauteur du conteneur (i.e.:html,corps) doit être de 100% ).

Option 1 align-self-center sur flexbox enfant

<div class="container d-flex h-100">
    <div class="row justify-content-center align-self-center">
     I'm vertically centered
    </div>
</div>

https://www.codeply.com/go/fFqaDe5Oey

Option 2 align-items-center sur flexbox parent ( .row est display:flex; flex-direction:row )

<div class="container h-100">
    <div class="row align-items-center h-100">
        <div class="col-6 mx-auto">
            <div class="jumbotron">
                I'm vertically centered
            </div>
        </div>
    </div>
</div>

enter image description here

https://www.codeply.com/go/BumdFnmLuk

Option 3 justify-content-center sur flexbox parent ( .card est display:flex;flex-direction:column )

<div class="container h-100">
    <div class="row align-items-center h-100">
        <div class="col-6 mx-auto">
            <div class="card h-100 border-primary justify-content-center">
                <div>
                    ...card content...
                </div>
            </div>
        </div>
    </div>
</div>

https://www.codeply.com/go/3gySSEe7nd


en savoir plus sur Bootstrap 4 centrage Vertical

maintenant que Bootstrap 4 offre flexbox et autres utilités , il existe de nombreuses approches à la verticale alignement. http://www.codeply.com/go/WG15ZWC4lf

1-Centre Vertical Utilisant Les Marges Automatiques:

une autre façon de centrer verticalement est d'utiliser my-auto . Cela va centrer l'élément dans son conteneur. Par exemple, h-100 fait la pleine hauteur de la rangée, et my-auto sera le centre vertical de la colonne col-sm-12 .

<div class="row h-100">
    <div class="col-sm-12 my-auto">
        <div class="card card-block w-25">Card</div>
    </div>
</div>

Vertical À L'Aide Du Centre Auto Marges Démo

my-auto représente les marges sur l'axe vertical des ordonnées et est équivalent à:

margin-top: auto;
margin-bottom: auto;

2 - Centre Vertical avec Flexbox:

vertical center grid columns

depuis Bootstrap 4 .row est maintenant display:flex vous pouvez simplement utiliser align-self-center sur n'importe quelle colonne pour centrer verticalement...

       <div class="row">
           <div class="col-6 align-self-center">
                <div class="card card-block">
                 Center
                </div>
           </div>
           <div class="col-6">
                <div class="card card-inverse card-danger">
                    Taller
                </div>
          </div>
    </div>

ou, utiliser align-items-center sur la totalité du .row pour aligner verticalement le centre de tous les col-* dans la rangée...

       <div class="row align-items-center">
           <div class="col-6">
                <div class="card card-block">
                 Center
                </div>
           </div>
           <div class="col-6">
                <div class="card card-inverse card-danger">
                    Taller
                </div>
          </div>
    </div>

Centre Vertical De Hauteur Différente Colonnes Démo


3 - Centre Vertical Utilisant Les Outils D'Affichage:

Bootstrap 4 a afficher utils qui peut être utilisé pour display:table , display:table-cell , display:inline , etc.. Ceux-ci peuvent être utilisés avec le utils d'alignement vertical pour aligner inline, inline-bloc ou des éléments de cellules de tableau.

<div class="row h-50">
    <div class="col-sm-12 h-100 d-table">
        <div class="card card-block d-table-cell align-middle">
            I am centered vertically
        </div>
    </div>
</div>

Centre Vertical À L'Aide De L'Affichage Utils Démo

autres exemples

centre Vertical image dans <div>

centre Vertical .ligne dans .conteneur

centre Vertical et fond dans <div>

centre Vertical enfant à l'intérieur du parent

centre Vertical plein écran jumbotron


Important! ai-je mentionné la hauteur?

Rappelez-vous la verticale de centrage est relative à la hauteur de la mère élément. Si vous voulez centrer sur la page entière, dans la plupart des cas, ce devrait être votre CSS...

body,html {
  height: 100%;
}

si vous voulez centrer un élément enfant à l'intérieur du parent. Le parent doit avoir une "hauteur 1519350920" définie 1519380920".

Voir Aussi:

alignement Vertical dans le bootstrap 4

Bootstrap 4 Alignement central Vertical et Horizontal

262
répondu Zim 2018-10-10 11:17:20

vous pouvez aligner verticalement votre conteneur en faisant fléchir le conteneur parent et en ajoutant align-items:center :

body {
  display:flex;
  align-items:center;
}

"151950920 Mis" À La Plume

10
répondu Pete 2017-02-15 14:47:28

après bootstrap 4 classes m'a aidé à résoudre ce

<div class="col text-center justify-content-center align-self-center">
    <img width=3rem src=".." alt="...">
</div>
8
répondu Manoj 2018-04-14 09:15:27
.jumbotron {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}
5
répondu Nate Beers 2017-02-15 14:47:40

Dans le Bootstrap 4 (beta), utilisez align-middle . Se référer à Bootstrap 4 Documentation sur l'alignement Vertical :

modifier l'alignement des éléments avec le alignement vertical utilitaire. Veuillez noter que l'alignement vertical ne concerne que inline , bloc en ligne , bloc en ligne et bloc de table élément.

choisir parmi .align-baseline , .align-top , .align-middle , .align-bottom , .align-text-bottom et .align-text-top selon les besoins.

3
répondu vallismortis 2017-10-15 13:30:27

Dans Le Bootstrap 4.1.3:

cela a fonctionné pour moi quand j'ai essayé de centrer un badge bootstrap à l'intérieur d'un container > row > column à côté d'un h1 titre.

qu'est Ce que le travail était simple css:

.my-valign-center {
  vertical-align: 50%;
}

ou

<span class="badge badge-pill" style="vertical-align: 50%;">My Badge</span>
0
répondu phyatt 2018-08-29 17:49:44

parce qu'aucune de ces réponses n'a fonctionné pour moi, j'ajoute une autre réponse.

objectif: aligner verticalement et horizontalement une div sur une page en utilisant les classes Bootstrap 4 flexbox.

Etape 1: Réglez votre div externe à une hauteur de 100vh . Cela permet de régler la hauteur à 100% de la hauteur du Veiwport. Si tu ne le fais pas, rien d'autre ne marchera. Le réglage à une hauteur de 100% est seulement relatif au parent, donc si le parent n'est pas le plein hauteur du point de vue, rien ne marchera. Dans l'exemple ci-dessous, je mets le corps à 100vh.

Étape 2: Définir le conteneur div comme étant le conteneur flexbox de la classe d-flex .

Étape 3: Centre div horizontalement avec la classe justify-content-center .

Étape 4: div Centrale verticalement avec le align-items-center

Étape 5: exécuter la page, voir votre div verticalement et horizontalement centré.

Notez qu'il n'y a pas de classe spéciale qui doit être définie sur la div centrée elle-même (la div enfant)

<body style="background-color:#f2f2f2; height:100vh;">

<div class="h-100 d-flex justify-content-center align-items-center">
    <div style="height:600px; background-color:white; width:600px;">
</div>

</div>

</body>
0
répondu Greg0 2018-09-30 11:01:04