角形材料-柔性版面和卡片

时间:2019-05-02 21:14:15

标签: angular angular-flex-layout angular-material-7

在基于Angular Material的应用程序中,flex布局的行为存在问题。我想要一个简单的“卡片网格”布局,其中连续3张卡片(最大的屏幕),中等尺寸的2张卡片和较小的屏幕1张卡片。 问题是当我在最大屏幕的最后一行只有1张卡片时,因为最后一张卡片的宽度是屏幕宽度的100%。如何避免这个问题?

这是我当前的代码。

<div class="page-wrapper">
  <div fxLayout="row wrap" fxLayoutGap="16px" class="align" *ngIf="!loading">
    <mat-card fxFlex.lg="calc(33% - 16px)" fxFlex.lt-lg="calc(50% - 16px)" fxFlex.xs="calc(100% - 16px)"
              *ngFor="let post of posts">
      <mat-card-header>
        <mat-card-title>{{ getCleanString(post.title.rendered) }}</mat-card-title>
        <mat-card-subtitle>{{ post.date_gmt | date }}</mat-card-subtitle>
      </mat-card-header>
      <img matCardImage [src]="post['_embedded']['wp:featuredmedia'][0]['media_details'].sizes['medium'].source_url"
           class="card-image">
      <mat-card-content [innerHTML]="post.excerpt.rendered"></mat-card-content>
      <mat-card-actions align="start">
        <a mat-button color="primary" [href]="post.link">Czytaj więcej</a>
      </mat-card-actions>
    </mat-card>
  </div>
</div>

编辑:卡之间的间距没有问题。问题是最后一张卡的整个布局的宽度为100%(不是其他宽度的1/3)。

example:

1 个答案:

答案 0 :(得分:2)

尝试将0 0添加到fxFlex.lg,如下所示:fxFlex.lg="0 1 calc(33% - 16px)"

这将删除弹性增长。

注意:您必须在最后一个元素上添加margin-right: 16px;才能获得正确的对齐方式