【问题标题】:Material Angular card display材质角卡展示
【发布时间】:2018-05-08 09:08:06
【问题描述】:

我有一个图片库,我想在一个基于宝丽来卡片的系统中显示它们,该系统跨越多行和多列。我面临的问题与图像的布局有关。当图像同时是纵向和横向时,横向图像的 mat-card 属性会膨胀以匹配纵向图像的大小。我怎样才能拥有一个自然填充系统,其中 mat-card 可以适应图像的宽度/高度比?

HTML:

    <div fxLayout="row">
        <div layout="column">
            <div fxFlex="100" fxFlexOffset="1" fxLayoutWrap fxLayoutGap="2rem" class="mat-elevation-z0" *ngIf="postcards != null">
                <mat-card *ngFor="let postcard of postcards let index = index" >
                        <img mat-card-image src="{{postcard.img}}" alt="{{postcard.postcard_id}}" class="postcards" (click)="display_postcard(index)">
                </mat-card>
            </div>
        </div>
    </div>

CSS:

    .postcards {
        max-width: 320px;
    }

当前视图:

这就是我想要实现的目标:

谢谢!

【问题讨论】:

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


    【解决方案1】:

    我知道我的反应会很奇怪,但我认为左边的浮动可能是你正在寻找的(是的,我讨厌自己浮动)

    但是,如果您摆脱示例中的所有 flex 内容并直接在 mat-card 上添加边距

    <div class="mat-elevation-z0" *ngIf="postcards != null">
          <mat-card *ngFor="let postcard of postcards let index = index" >
                  <img mat-card-image src="{{postcard.img}}" alt="{{postcard.postcard_id}}" class="postcards" (click)="display_postcard(index)">
          </mat-card>
    </div>
    
    
    
    mat-card {
       margin: 1rem;
       float: left;
    }
    

    您的卡将尝试适应可用空间。但当然,这不会是所有情况的完美匹配。但我认为它是你能找到的更好的纯 CSS 解决方案。

    【讨论】:

      【解决方案2】:

      您可能想尝试砖石或同位素来帮助填补空白,两者在 dev 中都有 npm 包:

      https://www.npmjs.com/package/angular2-isotope

      https://www.npmjs.com/package/angular2-masonry

      【讨论】:

      • 我不知道为什么我认为不使用更多库就可以实现这一点,但我会试一试并报告。感谢您的建议,非常感谢。
      【解决方案3】:

      我认为您正在寻找的是fxLayoutAlign 属性。

      尝试像这样将fxLayoutAlign="start start" 添加到您的div:

      <div fxFlex="100" fxFlexOffset="1" fxLayoutWrap fxLayoutGap="2rem" fxLayoutAlign="start start" class="mat-elevation-z0" *ngIf="postcards != null">
      

      P.S.如果您想尝试不同的选项,请查看Flex-Layout Demo。

      【讨论】:

      • 谢谢!到了一半!这使得 mat-card 大小适合图像,但是它不会将两个横向图像放在同一列中。我开始相信这可能是不可能的:/
      • 您的所有卡片似乎都具有相同的宽度。假设我建议您在同一个 div 上尝试fxLayout="column",看看您是否越来越接近。让我知道它是否有帮助
      • 可悲的是,这使整个页面变成了一个单独的列:(
      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 2020-02-06
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多