229 votes

Alignement vertical et horizontal du centre Bootstrap

J'ai une page où seul le formulaire existe et je veux que le formulaire soit placé au centre de l'écran.

<div class="container">
  <div class="row justify-content-center align-items-center">
    <form>
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>  
</div>

El justify-content-center aligne le formulaire horizontalement, mais je n'arrive pas à trouver comment l'aligner verticalement. J'ai essayé d'utiliser align-items-center y align-self-center mais ça ne marche pas.

Qu'est-ce que je rate ?

DEMO

459voto

Skelly Points 27772

Bootstrap 5 (Mise à jour 2021)

Bootstrap 5 est toujours flexbox de sorte que le centrage vertical fonctionne de la même manière que dans Bootstrap 4. Par exemple, align-items-center (flex-direction : row) et justify-content-center (flex-direction : column) peut être utilisé sur le parent flexbox (row ou d-flex).

Exemples de centrage dans Bootstrap 5

Centre vertical (n'oubliez pas que le parent doit avoir une hauteur définie !):

  • my-auto pour le centrage à l'intérieur de flex ( .d-flex ) éléments
  • my-auto peut être utilisé pour colonnes centrales ( .col- ) à l'intérieur de row
  • align-items-center a colonnes centrales ( col-* ) à l'intérieur de row

Centre horizontal :

  • text-center au centre display:inline éléments et contenu des colonnes
  • mx-auto pour le centrage à l'intérieur des éléments flexibles
  • mx-auto peut être utilisé pour colonnes centrales ( .col- ) à l'intérieur row
  • justify-content-center a colonnes centrales ( col-* ) à l'intérieur row

Bootstrap 4.3+ (Mise à jour 2019)

Il y a pas besoin para CSS supplémentaire . Ce qui est déjà inclus dans Bootstrap fonctionnera. Assurez-vous que le(s) conteneur(s) du formulaire sont pleine hauteur . Bootstrap 4 dispose désormais d'un h-100 classe pour une hauteur de 100%...

Centre vertical :

<div class="container h-100">
  <div class="row h-100 justify-content-center align-items-center">
    <form class="col-12">
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>
</div>

https://codeply.com/go/raCutAGHre

la hauteur du conteneur avec le ou les éléments à centrer doit être de 100 %. (ou la hauteur souhaitée par rapport à l'élément centré).

Remarque : Lorsque vous utilisez height:100% ( hauteur en pourcentage ) sur un élément quelconque, l'élément prend la hauteur de son conteneur . Dans les navigateurs modernes, les unités vh height:100vh; peut être utilisé à la place de % pour obtenir la hauteur souhaitée.

Par conséquent, vous pouvez définir html, body {height : 100%}, ou utiliser la nouvelle fonction min-vh-100 sur le conteneur au lieu de h-100 .


Centre horizontal :

  • text-center au centre display:inline éléments et contenu des colonnes
  • mx-auto pour le centrage à l'intérieur des éléments flexibles
  • offset-* o mx-auto peut être utilisé pour colonnes centrales ( .col- )
  • justify-content-center a colonnes centrales ( col-* ) à l'intérieur row

Alignement vertical du centre dans Bootstrap
Formulaire centré plein écran de Bootstrap 4
Groupe d'entrée central de Bootstrap 4
Bootstrap 4 horizontal + vertical centre plein écran

0 votes

Est-il possible d'utiliser le <section> ou faut-il s'en tenir à la balise <div> pour centrer le contenu horizontalement et verticalement dans la fenêtre d'affichage ? J'ai un site existant qui comporte des pages dont les sections changent de couleur et/ou d'image de fond.

0 votes

Tout enfant direct de la ligne ne devrait-il pas être un .col ?

10 votes

Cette réponse est légèrement erronée. Vous dites explicitement "il n'y a PAS BESOIN de CSS supplémentaire" mais c'est faux. Dans votre exemple de code, il est indiqué que vous devez définir le corps et le html à 100 % en CSS en dehors de Bootstrap 4. Sans ce CSS supplémentaire, votre solution ne fonctionne pas.

32voto

karembadawy Points 126

Ça marche pour moi :

<section class="h-100">
  <header class="container h-100">
    <div class="d-flex align-items-center justify-content-center h-100">
      <div class="d-flex flex-column">
        <h1 class="text align-self-center p-2">item 1</h1>
        <h4 class="text align-self-center p-2">item 2</h4>
        <button class="btn btn-danger align-self-center p-2" type="button" name="button">item 3</button>
      </div>
    </div>
  </header>
</section>

2 votes

N'oubliez pas d'ajouter des styles css : <style type="text/css"> html, body{ height: 100%; } .full-page{ height: 100vh; width: 100vw; } </style>

20voto

shades3002 Points 192

Flexbox peut vous aider. info ici

<div class="d-flex flex-row justify-content-center align-items-center" style="height: 100px;">
    <div class="p-2">
     1
    </div>
    <div class="p-2">
     2
    </div>
</div>

15voto

ciaran kehoe Points 1

Bootstrap dispose de text-center pour centrer un texte. Par exemple

<div class="container text-center">

Vous modifiez les éléments suivants

<div class="row justify-content-center align-items-center">

à ce qui suit

<div class="row text-center">

12voto

Bram Vanroy Points 4460

Tu as besoin de quelque chose pour centrer ta forme. Mais comme vous n'avez pas spécifié de hauteur pour le html et le body, le contenu est simplement enveloppé - et pas le viewport. En d'autres termes, il n'y avait pas de place où centrer l'élément.

html, body {
  height: 100%;
}
.container, .row.justify-content-center.align-items-center {
  height: 100%;
  min-height: 100%;
}

1 votes

En outre, le h-100 La classe util peut être utilisée pour height:100% dans Bootstrap 4.

1 votes

Je conseille maintenant d'utiliser la solution de @ZimSystem car elle ne nécessite pas de CSS personnalisé et utilise uniquement les classes fournies par Bootstrap.

1 votes

@BramVanroy Comme vous l'avez dit, j'ai utilisé la solution de ZimSystem mais elle n'a pas fonctionné pour moi. Votre solution fonctionne aussi bien sur la version 4.0.0 que sur la mise à jour 4.1.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X