离子如何固定离子含量以填充设备屏幕尺寸
Ionic how to fix ion content to fill the device screen size
我想要的是我的离子含量适合设备屏幕。我想减少或扩大离子含量而不是滚动。
目前我的页面在 chrome 设备工具栏中显示为 Iphone 5 的下图。另一方面,由于设备屏幕尺寸的原因,Iphone X 的一切看起来都很完美。
我关注HTML:
<ion-content padding class="card-background-page " no-bounce>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
</ion-content>
CSS
page-menu {
.hr{
border: 0;
clear:both;
display:block;
width: 96%;
background-color:#f3f6db;
height: 1px;
}
.card-background-page {
ion-card {
position: relative;
text-align: center;
background-color: transparent;
}
.card-title {
top: 74%;
font-size: 2.0em;
width: 100%;
color: #fff;
font-family: auto;
}
.card-subtitle {
font-size: 1.0em;
position: absolute;
top: 52%;
width: 100%;
color: #fff;
}
}
}
StackBlitz Url:here
您的建议或指示是什么?
谢谢
所以问题是它的响应不够快,在 ionic 3 应用程序中获得响应可能很棘手,因为在那个页面中你有 ion-content
至极 .scroll-content
并且 .fixed-content
在内部,选项卡也不会 "push" 内容向上,ionic 只是向内容添加精确数量的边距,这样它就不会与页脚冲突。
这就是我所做的:
HTML:
<ion-content class="card-background-page">
<div class="buttons">
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</div>
</ion-content>
CSS:
page-home {
ion-content{
background: url('https://i.imgur.com/olLunTc.jpg')no-repeat fixed;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.scroll-content {
overflow-y: hidden;
}
.card-background-page {
.buttons {
display: grid;
grid-template: repeat(3, 1fr) / repeat(2, 1fr);
height: calc(100vh - 55px); // i've added this number of pxls, but you can inspect and get the exact amount of the tab footer
}
ion-card {
display: flex;
flex-direction: column;
text-align: center;
align-items: center;
background-color: transparent;
img {
width: 80%;
}
.card-title {
font-size: 2rem;
width: 100%;
color: #fff;
font-family: auto;
}
}
}
}
所以首先我从你的代码中删除了离子网格,而是使用 CSS 网格来完成这项工作。 Ionic grid 很好,它作为响应式网格做得很好,但你无法控制它,所以对于这个 CSS 网格更好。
我创建了一个 div 和 class buttons
来容纳 "menu",它有一个计算的高度,所以它可以适应整个内容删除标签高度。仅此一项就可以使您的内容只延伸到该区域。
所以有了这个卡片将尊重 CSS 网格的行和列,现在的工作是使图像和文本响应,并且使用 %
和 rem
用于文本。
我已经询问了该菜单中的项目数量,因为如果超过 6 个项目,它看起来会很奇怪,您需要修改 grid-templates
的第一个参数中的行数.所以 8 个或更多项目会使图像变小,并且取决于你想要显示的内容,它不会很好,在这种情况下我建议删除图像,你甚至可以将所有项目放入数组并使用和有条件地显示它仅当 array.length <= 6
,如
.TS
public menu: any[] = [{img: "url", text: "menu text"}, ...];
HTML
<ion-card *ngFor="let item of menu">
<img [src]="item.img" *ngIf="menu.length <= 6"/>
<div class="card-title">{{item.text}}</div>
</ion-card>
这就是我的想法,抱歉耽误了时间,希望对您有所帮助 :D
我想要的是我的离子含量适合设备屏幕。我想减少或扩大离子含量而不是滚动。
目前我的页面在 chrome 设备工具栏中显示为 Iphone 5 的下图。另一方面,由于设备屏幕尺寸的原因,Iphone X 的一切看起来都很完美。
我关注HTML:
<ion-content padding class="card-background-page " no-bounce>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
<ion-row>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
<ion-col (click)="goPage(4)">
<ion-card>
<img src="assets/imgs/kid.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</ion-col>
</ion-row>
</ion-content>
CSS
page-menu {
.hr{
border: 0;
clear:both;
display:block;
width: 96%;
background-color:#f3f6db;
height: 1px;
}
.card-background-page {
ion-card {
position: relative;
text-align: center;
background-color: transparent;
}
.card-title {
top: 74%;
font-size: 2.0em;
width: 100%;
color: #fff;
font-family: auto;
}
.card-subtitle {
font-size: 1.0em;
position: absolute;
top: 52%;
width: 100%;
color: #fff;
}
}
}
StackBlitz Url:here
您的建议或指示是什么? 谢谢
所以问题是它的响应不够快,在 ionic 3 应用程序中获得响应可能很棘手,因为在那个页面中你有 ion-content
至极 .scroll-content
并且 .fixed-content
在内部,选项卡也不会 "push" 内容向上,ionic 只是向内容添加精确数量的边距,这样它就不会与页脚冲突。
这就是我所做的:
HTML:
<ion-content class="card-background-page">
<div class="buttons">
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
<ion-card>
<img src="https://i.imgur.com/YpXomyN.png"/>
<div class="card-title">Lorem Ipsum</div>
</ion-card>
</div>
</ion-content>
CSS:
page-home {
ion-content{
background: url('https://i.imgur.com/olLunTc.jpg')no-repeat fixed;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
.scroll-content {
overflow-y: hidden;
}
.card-background-page {
.buttons {
display: grid;
grid-template: repeat(3, 1fr) / repeat(2, 1fr);
height: calc(100vh - 55px); // i've added this number of pxls, but you can inspect and get the exact amount of the tab footer
}
ion-card {
display: flex;
flex-direction: column;
text-align: center;
align-items: center;
background-color: transparent;
img {
width: 80%;
}
.card-title {
font-size: 2rem;
width: 100%;
color: #fff;
font-family: auto;
}
}
}
}
所以首先我从你的代码中删除了离子网格,而是使用 CSS 网格来完成这项工作。 Ionic grid 很好,它作为响应式网格做得很好,但你无法控制它,所以对于这个 CSS 网格更好。
我创建了一个 div 和 class buttons
来容纳 "menu",它有一个计算的高度,所以它可以适应整个内容删除标签高度。仅此一项就可以使您的内容只延伸到该区域。
所以有了这个卡片将尊重 CSS 网格的行和列,现在的工作是使图像和文本响应,并且使用 %
和 rem
用于文本。
我已经询问了该菜单中的项目数量,因为如果超过 6 个项目,它看起来会很奇怪,您需要修改 grid-templates
的第一个参数中的行数.所以 8 个或更多项目会使图像变小,并且取决于你想要显示的内容,它不会很好,在这种情况下我建议删除图像,你甚至可以将所有项目放入数组并使用和有条件地显示它仅当 array.length <= 6
,如
.TS
public menu: any[] = [{img: "url", text: "menu text"}, ...];
HTML
<ion-card *ngFor="let item of menu">
<img [src]="item.img" *ngIf="menu.length <= 6"/>
<div class="card-title">{{item.text}}</div>
</ion-card>
这就是我的想法,抱歉耽误了时间,希望对您有所帮助 :D