我创建了一个登录页面,其中包含用户名和密码输入,后跟按钮和超链接。 我想将整个离子含量分别放在水平和垂直的中心。
ion-content {
position: absolute;
top: 50%;
left: 0%;
right: 50%;
margin: 0 auto;
margin-top: 0;
margin-left: 0;
}
// .div1 {
// position: absolute;
// background-color: green;
// top: 0;
// left: 0;
// right: 0;
// bottom: 0;
// display: block;
// width: 100%;
// height: 100%; // contain: layout size style;
// }
// // .Absolute-Center {
// // margin: auto;
// // position: absolute;
// // top: 0; left: 0; bottom: 0; right: 0;
// // }
// div {
// position: absolute;
// top: 0;
// bottom: 0;
// left: 0;
// right: 0;
// margin: auto;
// width: 100%;
// height: 100%;
// background-color: transparent;
// }

<ion-header>
<ion-navbar>
<ion-title>login</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<ion-item>
<ion-label floating>User Name</ion-label>
<ion-input [(ngModel)]="user.username" type="text" style="background-color:transparent"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input [(ngModel)]="user.password" type="password"></ion-input>
</ion-item>
<button padding (click)="homePage()" color=secondary ion-button full round>Login</button>
<a (click)="registerPage()">New ? Register here</a>
</ion-content>
&#13;
你能否提出一些其他方法来实现它。输出应该非常敏感。
答案 0 :(得分:1)
您可以在app.scss
文件中添加此样式规则:
.vertical-center {
.fixed-content,
.scroll-content {
display: flex;
align-items: center;
ion-list {
max-width: 300px;
width:100%;
margin: auto;
text-align: center;
}
}
}
然后将项目包装在ion-list
内,如下所示:
<ion-header>
<ion-navbar>
<ion-title>login</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding class="vertical-center">
<ion-list>
<ion-item no-padding>
<ion-label floating>User Name</ion-label>
<ion-input [(ngModel)]="user.username" type="text" style="background-color:transparent"></ion-input>
</ion-item>
<ion-item no-padding>
<ion-label floating>Password</ion-label>
<ion-input [(ngModel)]="user.password" type="password"></ion-input>
</ion-item>
<button padding (click)="homePage()" color=secondary ion-button full round>Login</button>
<a (click)="registerPage()">New ? Register here</a>
</ion-list>
</ion-content>
答案 1 :(得分:0)
您可以使用flexbox来纵向和横向居中。这可能有助于您入门:
ion-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
<ion-header>
<ion-navbar>
<ion-title>login</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<ion-item>
<ion-label floating>User Name</ion-label>
<ion-input [(ngModel)]="user.username" type="text" style="background-color:transparent"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Password</ion-label>
<ion-input [(ngModel)]="user.password" type="password"></ion-input>
</ion-item>
<button padding (click)="homePage()" color=secondary ion-button full round>Login</button>
<a (click)="registerPage()">New ? Register here</a>
</ion-content>
答案 2 :(得分:0)
根据您的浏览器支持要求,您可以使用CSS3'transform'属性,结合绝对定位,将div放在页面中间。
首先,使用position:absolute将div从页面的顶部和左侧放置50%:
position:absolute;
top:50%;
left:50%;
https://jsfiddle.net/bfdqL5um/1/
(红色边框纯粹是为了说明方框)
这会将div的左上角放在页面的中心。然后,您可以使用transform / translate将其向后移动50%的高度和宽度:
transform:translate(50%,50%);
盒子现在完全居中 https://jsfiddle.net/bfdqL5um/2/
IE9 +和所有其他主流浏览器都支持此功能。
请注意,使用绝对定位时,您必须注意任何父元素的位置。 (即如果定位了一个图标内容父项,则可能会影响如何应用这个父项的绝对定位。)
(如果格式或礼节很差,第一个StackOverflow帖子很抱歉!)
答案 3 :(得分:0)
这对我有用:
<ion-grid class="center-grid">
</ion-grid>
ion-grid {
&.center-grid {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) !important;
display: block !important;
/*width: 100%;*/
}
}