如何使用 Angular Flex 布局垂直居中?

新手上路,请多包涵

我创建了一个简单的登录组件,我想垂直居中,但我不确定如何使用 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>

样式.scss

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

截屏: 在此处输入图像描述

原文由 Christian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 540
2 个回答

如果容器元素与其内容的高度相同,则使用 flexbox 垂直居中的元素无效。在您的示例中使顶层 <div> 占用所有可用的垂直空间 height: 100% (或其他一些 Angular Flex Layout 特定解决方案,如果可用 - 可能 fxFlexFill )应该将其内容放在您想要的位置。

原文由 Kaivosukeltaja 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果父元素的高度已知,那么您只需要 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;
}

原文由 Ericky 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题