I\'ve created a simple login component and I\'d like to vertically center, but I\'m not sure how to achieve this using the Angular Flex Layout library.
app.component
Vertically centering elements with flexbox has no effect if the container element is the same height as its contents. Making the top level <div>
in your example take up all the available vertical space with height: 100%
(or some other Angular Flex Layout specific solution if available - maybe fxFlexFill
) should center its contents right where you want them.
If the parent element has a known height, all you need is 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;
}
You have to specify the height of the fxLayout (Edited)
<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%
}