Angular Material 7 – Grid List
在大多数 Web 应用中,呈现数据的方式往往是以列表形式呈现的,这种方式总是有些单调。但是在某些情况下,我们需要将我们的数据以网格形式呈现。在这种情况下,Angular Material 的 Grid List 组件就非常适合使用。在这篇文章中,我们将详细介绍 Angular Material 7 中的 Grid List 组件,并提供一些例子来让你更好地理解。
什么是 Grid List?
Grid List 是一个基于 Flex 布局的组件,可以用于展示纵向和横向的数据列表。它包含多种选项,使您可以根据自己的需求呈现数据。
下面是一个简单的 Grid List 例子:
<mat-grid-list cols="2" rowHeight="100px">
<mat-grid-tile *ngFor="let tile of tiles" [colspan]="tile.cols" [rowspan]="tile.rows">
{{tile.text}}
</mat-grid-tile>
</mat-grid-list>
在这个例子中,我们使用 cols 属性设置为 2,来让 Grid List 中的元素分为两列展示。我们也使用 rowHeight 属性,将每个元素的高度设置为 100px,这样它们就会以同样的高度出现。最后,我们使用 ngFor 指令来迭代一个数组,并使用 colspan 和 rowspan 属性来设置每个元素所占据的列和行的数量。
Grid List 的 API
在本节中,我们将更加深入地了解 Grid List 的 API。您可以按照自己的需要,在应用程序中使用这些选项。
mat-grid-list
mat-grid-list 是 Grid List 的容器组件。它有以下属性:
cols:设置Grid List中列的数量。rowHeight:设置Grid List中每个元素的高度。gutterSize:根据像素值设置Grid List中元素之间的间隔大小。
以下是一个具有三列,并且带有 30px 间隔的 Grid List:
<mat-grid-list cols="3" gutterSize="30">
<!-- 其他元素 -->
</mat-grid-list>
mat-grid-tile
mat-grid-tile 是 Grid List 中的每个元素。它有以下属性:
colspan:设置一行中mat-grid-tile元素所占用的列的数量。rowspan:设置一列中mat-grid-tile元素所占用的行的数量。col:设置元素在横向的位置。row:设置元素在纵向的位置。style:设置元素的 CSS 样式。
以下是一个具备 2 列和 2 行的 Grid List 中的一个元素,占据了 2 行和 1 列:
<mat-grid-list cols="2" rowHeight="100px">
<mat-grid-tile rowspan="2" colspan="1" >
<!-- 其他元素 -->
</mat-grid-tile>
</mat-grid-list>
Grid List 的示例
在这一部分,我们将涵盖一些使用 Grid List 的例子。这些例子将有助于让您更好地了解如何使用 Grid List,并从其他人的实现中汲取灵感。
网格布局
下面的例子展示了如何使用 mat-grid-list 来创建一个基本的网格布局,其中包含一些图像和文本:
<mat-grid-list cols="2" rowHeight="250px" gutterSize="10">
<mat-grid-tile *ngFor="let item of items" [colspan]="item.cols" [rowspan]="item.rows">
<mat-card class="example-card">
<img mat-card-image src="{{item.img}}" alt="{{item.name}}">
<mat-card-content>
<h2 mat-card-title>{{item.name}}</h2>
<p mat-card-subtitle>{{item.desc}}</p>
<p mat-card-subtitle>{{item.date}}</p>
</mat-card-content>
</mat-card>
</mat-grid-tile>
</mat-grid-list>
如上所述,cols="2" 属性将元素分为两列。这个例子还使用 <mat-card> 组件作为 Grid List 中的元素,以展示图像和文本。
瀑布流布局
接下来,这个例子展示了如何使用 mat-grid-list 来创建一个瀑布式布局,其中包含了不同大小和形状的元素:
<mat-grid-list cols="4" rowHeight="120px" [style.height]="totalHeight">
<mat-grid-tile *ngFor="let item of items" [colspan]="item.cols" [rowspan]="item.rows">
<div class="example-grid-tile-content"
[ngStyle]="{'background': item.color}"
[style.height.px]="item.rows * 40"
[style.width.%]="item.cols * 25">
{{item.text}}
</div>
</mat-grid-tile>
</mat-grid-list>
该示例中 cols="4" 属性将元素分为四列,但这次它们可以有不同的大小和形状。 这个例子使用 CSS 样式来设置不同的背景颜色和元素的大小。
结论
在本文中,我们介绍了 Angular Material 7 中的 Grid List 组件,并提供了一些例子来展示如何使用这个组件。借助这些示例,您现在应该可以使用 Grid List 来呈现您的数据了。如果您想了解更多信息,请查看 Angular Material 文档。
极客笔记