Dar*_*ues 3 css ionic-framework angular
我正在尝试使用 Ionic 框架做一个简单的卡片收集。
我正在使用 SpaceX API 来填充卡片。我的代码包括角度指令。我建立了这个:
<ion-grid>
<ion-row>
<ion-col col-4>
<ion-card *ngFor="let launch of list_launches">
<ion-card-header>
{{ launch.mission_name }}
</ion-card-header>
<ion-card-content>
<ion-thumbnail item-start>
<img src="{{launch.links.mission_patch_small}}">
</ion-thumbnail>
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</ion-grid>
Run Code Online (Sandbox Code Playgroud)
这*ngFor="let launch of list_launches"用于从对象 list_launches 获取一些属性。
我找到了这个解决方案:
<ion-row>
<ion-col col-4>
Left
</ion-col>
<ion-col col-4>
Middle
</ion-col>
<ion-col col-4>
Right
</ion-col>
</ion-row>
Run Code Online (Sandbox Code Playgroud)
但是当我使用 *ngfor 参数时,这不能正常工作。想要垂直对齐这张 Ionic 卡。
所以这里的问题是 Ionic 网格需要一个非通用模板来构建更复杂的网格。我总是发现这些布局组件有点矫枉过正,因为大多数东西都可以用几个 CSS 声明来完成。在您的情况下,我根本不会使用离子网格并将其编写在CSS Grid 中。两个简单的 CSS 规则可以解决这个问题:
display: grid;
grid-template-columns: 1fr 1fr 1fr;
Run Code Online (Sandbox Code Playgroud)
我在这里创建了一个非常基本的网格,并告诉它它有三个大小相同的列(1fr表示 1 个分数)。
您还可以使用该repeat功能
display: grid;
grid-template-columns: repeat(3, 1fr);
Run Code Online (Sandbox Code Playgroud)
代码也少得多:
<div style="display: grid;grid-template-columns: 1fr 1fr 1fr;">
<ion-card *ngFor="let launch of list_launches">
<ion-card-header>
{{ launch.mission_name }}
</ion-card-header>
<ion-card-content>
<ion-thumbnail item-start>
<img src="">
</ion-thumbnail>
</ion-card-content>
</ion-card>
</div>
Run Code Online (Sandbox Code Playgroud)
https://stackblitz.com/edit/ionic-7qd5xf
更新:正如托马斯在评论中所建议的,*ngFor在ion-col自身上使用指令也足够了:
<ion-row>
<ion-col col-4 *ngFor="let launch of list_launches" >
<ion-card >
<ion-card-header>
{{ launch.mission_name }}
</ion-card-header>
<ion-card-content>
<ion-thumbnail item-start>
<img src="">
</ion-thumbnail>
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
Run Code Online (Sandbox Code Playgroud)