web-dev-qa-db-fra.com

Comment centrer verticalement avec Angular Flex Layout?

J'ai créé un composant de connexion simple et j'aimerais centrer verticalement, mais je ne sais pas comment y parvenir en utilisant la bibliothèque de mise en page Angular Flex).

app.component.html

<router-outlet></router-outlet>

login.component.html

<div fxLayout fxLayoutAlign="center center">
    <mat-card fxFlex="30%">
        <mat-card-title>Login</mat-card-title>

        <mat-card-content fxLayout="column">
            <mat-form-field>
                <input matInput placeholder="Username">
            </mat-form-field>
            <mat-form-field>
                <input matInput placeholder="Password">
            </mat-form-field>
        </mat-card-content>

        <button mat-raised-button color="accent">Login</button>
    </mat-card>
</div>

styles.scss

body{
    margin: 0;
    background-color: #eff2f5;
}

capture d'écran: enter image description here

6
Christian

Centrer verticalement les éléments avec flexbox n'a aucun effet si l'élément conteneur a la même hauteur que son contenu. Faire le niveau supérieur <div> dans votre exemple, occupez tout l'espace vertical disponible avec height: 100% (ou une autre solution spécifique Angular Flex Layout si disponible - peut-être fxFlexFill)) doit centrer son contenu là où vous le souhaitez.

9
Kaivosukeltaja

Si l'élément parent a une hauteur connue, tout ce dont vous avez besoin est fxLayoutAlign="center center":

<section class="intro-section">
  <div
   fxLayout="row"
   fxLayout.xs="column" 
   fxFlexFill
   fxLayoutAlign="center center"
  >
    <div fxFlex="50">
      <h1>MAYABI PORTFOLIO MULTIPURPOSE THEME</h1>
      <p>lorem ipsum dolor sit amt, consectet adop adipisicing elit, sed do eiusmod 
teporara incididunt ugt labore.</p>
    </div>
    <div fxLayout="50">
      hello
   </div>
  </div>
</section>

.intro-section {
   height: 500px;
}
7
Ericky

Vous devez spécifier la hauteur du fxLayout (Modifié)

<div fxLayout="row" fxLayoutAlign="center center" class="row-height">
    <mat-card fxFlex="30%">
        <mat-card-title>Login</mat-card-title>

        <mat-card-content fxLayout="column">
            <mat-form-field>
                <input matInput placeholder="Username">
            </mat-form-field>
            <mat-form-field>
                <input matInput placeholder="Password">
            </mat-form-field>
        </mat-card-content>

        <button mat-raised-button color="accent">Login</button>
    </mat-card>
</div>

CSS

.row-height {
    height: 100%
}
2
Abhijith