Невозможно разместить мат-карту в центре окна с помощью гибкого макета.

Я новичок в Flex Layout и только начал изучать, как использовать угловатый материал с гибким макетом.

Я реализовал простую форму входа в angular 2, используя угловой материал. Я хочу использовать гибкий макет с угловатым материалом.

Я использовал мат-карту, в которой выровнял элементы формы. Но я хочу разместить мат-карту в центре окна.

Это мой код

myform.component.html

<div fxlayout="column" style="background: white;">

<mat-card fxFlex>   
            <form  (ngSubmit)="onSubmit(user.username,user.password)" #myForm="ngForm">

                                <p style="font-size: 30x;">Space Study</p>
                                <p style="font-size: 14px;">Sign In</p>
                                <mat-input-container class="form-row">
                                    <span matTooltip="Username">
                                        <input matInput placeholder=" " id="username" [(ngModel)]="user.username" name="username">
                                    </span>
                                    <span matPrefix><mat-icon>person&nbsp;&nbsp;</mat-icon></span>
                                </mat-input-container>

                                <mat-input-container class="form-row">
                                    <span matTooltip="Password">
                                        <input matInput placeholder=" " id="password" [(ngModel)]="user.password" name="gpassword" [type]="hide ? 'password' : 'text'">
                                    </span>
                                    <span matPrefix><mat-icon>remove_red_eye&nbsp;&nbsp;</mat-icon></span>
                                </mat-input-container>

                    <button mat-raised-button color="primary" type="submit" mat-raised-button>Login</button>

                    <mat-progress-bar mode="indeterminate" *ngIf="showprogressbar"></mat-progress-bar>
            </form>

</mat-card>

</div>

myform.component.css

mat-card{
    width: 350px;
    height: 400px;
    align-self: center; 
}

.form-row{
    display: flex;
}

.form-row input{
    flex: 1;
}   

Вот мое окно вывода

введите здесь описание изображения

Подскажите, пожалуйста, как я могу разместить свою мат-карту в центре экрана ..?


person Heena    schedule 06.04.2018    source источник


Ответы (3)


Попробуйте добавить display: block; margin-left: auto; маржа-право: авто; в класс mat-card в css и удалите свойство align-self, например:

mat-card{
    width: 350px;
    height: 400px;
    display: block;
    margin-left:auto;
    margin-right:auto;  
    vertical-align:middle;
}
person Sathwik Gangisetty    schedule 06.04.2018
comment
его только центрирование по горизонтали, но не по вертикали ..! - person Heena; 06.04.2018
comment
нельзя ли здесь использовать dispaly: flex? - person Heena; 06.04.2018
comment
также добавьте свойство vertical-align: middle. Он должен работать. - person Sathwik Gangisetty; 06.04.2018

<div fxLayout="row" fxLayoutAlign="center center">
   <mat-card fxFlex> </mat-card>
</div>

Возможно, вам также придется добавить

:host {
  display: block;
  height: 100%;
}
person Tomasz Kula    schedule 06.04.2018
comment
подскажите, пожалуйста, зачем использовать: host ..? - person Heena; 06.04.2018
comment
он центрирован по горизонтали, а не по вертикали? :host стилизует компонент, в котором вы сейчас находитесь. myform в вашем случае. - person Tomasz Kula; 06.04.2018
comment
не следует ли здесь использовать display: flex ...? - person Heena; 06.04.2018
comment
fxLayout = row применяет display: flex для вас - person Tomasz Kula; 06.04.2018

demo screenshot Вы можете сделать так.

app.component.ts

<section fxLayout="column" fxLayoutAlign="center center" fxLayoutGap="10px">
  <mat-card>
    <form (ngSubmit)="onSubmit(f)" #f="ngForm">
      <mat-form-field>
        <input type="text" matInput placeholder="Enter something">
      </mat-form-field>
      <mat-form-field>
        <input type="text" matInput placeholder="Enter something">
      </mat-form-field>
      <button mat-raised-button color="primary">Submit</button>
    </form>
  </mat-card>
</section>

app.component.css

mat-card {
  width: 350px;
  height: 200px;
  display: block;
  margin-left: auto;
  margin-right: auto;
}

section {
  vertical-align: middle;
  height: 100%;
}

style.css

html,
body {
  height: 100%;
  margin-left: 0;
  margin-right: 0;
  margin-top: 0;
  margin-bottom: 0;

}
person Rohit Sharma    schedule 20.05.2019
comment
Это сработало для меня - person Lakin Mohapatra; 13.04.2021