Reputation: 1507
I have a login card that I designed using angular materials, whenever I run it on the page the content sticks to the left of the page.
I tried using flex
and using layout-align="center center"
but I still cannot bring the card to the center of the page
What am I doing wrong ?
Here is my html:
<mat-card class="example-card" layout="row" layout-align="center center">
<mat-card-header>
<div class="login-box-header" layout="row" layout-align="center center">
<img src="https://image.ibb.co/hDqa3p/codershood.png">
</div>
</mat-card-header>
<mat-card-content>
<form class="example-form">
<table class="example-full-width" cellspacing="0">
<tr>
<td>
<mat-form-field class="example-full-width">
<input matInput placeholder="Username" [(ngModel)]="username" name="username" required>
</mat-form-field>
</td>
</tr>
<tr>
<td><mat-form-field class="example-full-width">
<input matInput placeholder="Password" [(ngModel)]="password"type="password" name="password" required>
</mat-form-field></td>
</tr></table>
</form>
<mat-spinner [style.display]="showSpinner ? 'block' : 'none'"></mat-spinner>
</mat-card-content>
<mat-card-actions>
<button mat-raised-button (click)="login()" color="primary">Login</button>
</mat-card-actions>
</mat-card>
and here is the content still not centered:
Upvotes: 24
Views: 80438
Reputation:
I tried OP answer but I have to control width too, so had to use div inside div and then mat-card
.centering-div{
display: flex;
justify-content: center;
}
.inner-container {
width: 80%;
max-width: 100%;
overflow: auto;
}
.my-card {
max-width: 100%;
color: rgb(63, 81, 181);
}
Upvotes: 0
Reputation: 1431
Please try below css methods.
.example-card{
display:inline-block;
}
Then create one cover div for "mat-card". Give a class name for cover div like "mat-card-cvr".
.mat-card-cvr{
width: 100%;
text-align:center;
}
2.second way.
.example-card{
margin: 0 auto;
width: 40%;
}
.example-card{
margin: 0 auto;
width: 40%;
display: inline-block;
vertical-align: middle;
}
Then create one cover div for "mat-card". Give a class name for cover div like "mat-card-cvr".
.mat-card-cvr{
width: 100%;
height: 500px;
line-height: 500px;
text-align: center;
}
.mat-card-cvr{
top:50%;
width:100%;
text-align:center;
position:fixed;
}
.example-card{
margin:0 auto;
display:inline-block;
}
Upvotes: 13
Reputation: 127
Material provided mat-grid-list to arrange rows and columns. use it like this:
<mat-grid-list cols="1" rows="1" rowHeight="2:1">
<mat-grid-tile>
<mat-card>
Your form here
</mat-card>
</mat-grid-tile>
</mat-grid-list>
See docs for more info https://material.angular.io/components/grid-list/overview
Upvotes: 5
Reputation: 4825
This did the wonder to me:
.btn-center{
margin: 0 auto;
display: flex;
}
Upvotes: 3
Reputation: 1507
Fixed it by using Very simple Flex
.main-div{
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
and wrapping everything with a class
<!-- Classes main-div and example-card are catagorized in .css file -->
<div class="main-div">
<mat-card class="example-card">
<mat-card-header>
<div class="login-box-header">
<!-- Src image is temporary hosted in image.ibb-->
<img src="https://image.ibb.co/hDqa3p/codershood.png">
</div>
</mat-card-header>
<mat-card-content>
<form class="example-form">
<table class="example-full-width" cellspacing="0">
<tr>
<td>
<mat-form-field class="example-full-width">
<input matInput placeholder="Username" [(ngModel)]="username" name="username" required>
</mat-form-field>
</td>
</tr>
<tr>
<td><mat-form-field class="example-full-width">
<input matInput placeholder="Password" [(ngModel)]="password"type="password" name="password" required>
</mat-form-field></td>
</tr></table>
</form>
<mat-spinner [style.display]="showSpinner ? 'block' : 'none'"></mat-spinner>
</mat-card-content>
<mat-card-actions>
<button mat-raised-button (click)="login()" color="primary">Login</button>
</mat-card-actions>
</mat-card>
Upvotes: 43