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;
}
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.
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;
}
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%
}