首页 > 解决方案 > 将离子卡与 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>

*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>

但是当我使用 *ngfor 参数时,这不能正常工作。想要垂直对齐这张 Ionic 卡片。

标签: cssangularionic-framework

解决方案


所以这里的问题是离子网格需要一个非通用模板来构建更复杂的网格。我总是觉得这些布局组件太过分了,因为大多数事情都可以通过几个 CSS 声明来完成。在您的情况下,我根本不会使用离子网格并将其写在CSS Grid中。两个简单的 CSS 规则可以解决这个问题:

display: grid;
grid-template-columns: 1fr 1fr 1fr;

我在这里创建了一个非常基本的网格,并告诉它它有三个相同大小的列(1fr表示 1 个分数)。

您还可以使用该repeat功能

display: grid;
grid-template-columns: repeat(3, 1fr);

代码也少得多:

<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>

结果

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>

推荐阅读