如何使用 Angular Flex Layout 垂直居中?
How to center vertically with Angular Flex Layout?
我创建了一个简单的登录组件,我想垂直居中,但我不确定如何使用 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;
}
截图:
如果容器元素与其内容的高度相同,则使用 flexbox 使元素垂直居中无效。在您的示例中使顶层 <div>
占用所有可用的垂直 space height: 100%
(或其他一些 Angular Flex Layout 特定解决方案,如果可用 - 也许 fxFlexFill
) 应将其内容居中放置在您想要的位置。
您必须指定 fxLayout 的高度(已编辑)
<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%
}
如果父元素的高度已知,你只需要 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;
}
我创建了一个简单的登录组件,我想垂直居中,但我不确定如何使用 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;
}
截图:
如果容器元素与其内容的高度相同,则使用 flexbox 使元素垂直居中无效。在您的示例中使顶层 <div>
占用所有可用的垂直 space height: 100%
(或其他一些 Angular Flex Layout 特定解决方案,如果可用 - 也许 fxFlexFill
) 应将其内容居中放置在您想要的位置。
您必须指定 fxLayout 的高度(已编辑)
<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%
}
如果父元素的高度已知,你只需要 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;
}