【发布时间】:2018-08-20 09:38:20
【问题描述】:
我是 angular-material 库(以及一般的材料设计规范)的新手,我已经使用 bootstrap 多年,所以不确定我是否正确实施 mat-grid-list,但我有以下情况:
<mat-card>
<mat-grid-list cols="2">
<mat-grid-tile>
<mat-grid-tile-header>Clocked In</mat-grid-tile-header>
<mat-list>
<mat-list-item>
<button mat-raised-button color="warn">
{{user.firstName}} {{user.lastName}}
</button>
</mat-list-item>
</mat-list>
</mat-grid-tile>
<mat-grid-tile>
<mat-grid-tile-header>Clocked Out</mat-grid-tile-header>
<mat-list>
<mat-list-item>
<button mat-raised-button color="accent">
{{user.firstName}} {{user.lastName}}
</button>
</mat-list-item>
</mat-list>
</mat-grid-tile>
</mat-grid-list>
这是基于 angular-material 示例,我在其中包含了一个工作 stackblitz 示例:https://stackblitz.com/edit/angular-cccnjp?file=app%2Fsidenav-responsive-example.html
如您所见,按钮已在 mat-grid-tile-header 中呈现,而 mat-card 尚未扩展以容纳所提供的内容(如我所料)
编辑:所以,我确实尝试在 mat-grid-list 上使用 rowHeight="fit" 属性,但这不会呈现任何内容,我希望这会扩展 mat-grid-list 的高度,具体取决于内容,但这不起作用。
https://stackblitz.com/edit/angular-cccnjp-ylmzf9?file=app/sidenav-responsive-example.html
更新: 丑陋的工作解决方案
所以我设法用一些(相当丑陋的)css 来实现这一点......
<mat-card class="height100p">
<mat-grid-list cols="2">
<mat-grid-tile class="mat-grid-tile-custom">
<mat-grid-tile-header>Clocked In</mat-grid-tile-header>
<mat-list class="custom-mat-list">
<mat-list-item>
<button mat-raised-button color="warn">
{{user.firstName}} {{user.lastName}}
</button>
</mat-list-item>
</mat-list>
</mat-grid-tile>
<mat-grid-tile class="mat-grid-tile-custom">
<mat-grid-tile-header>Clocked Out</mat-grid-tile-header>
<mat-list class="custom-mat-list">
<mat-list-item>
<button mat-raised-button color="accent">
{{user.firstName}} {{user.lastName}}
</button>
</mat-list-item>
</mat-list>
</mat-grid-tile>
</mat-grid-list>
.height100p {
height: 100%;
}
.mat-grid-tile-custom {
overflow: visible!important;
}
.custom-mat-list { /* this is bad! */
padding-top: 50%!important;
}
.mat-grid-tile-custom .mat-figure {
align-items: unset!important;
}
如您所见,这里最明显的错误/问题是 .custom-mat-list 的 padding-top 为 50%,这在浏览器之间会有所不同,虽然从技术上讲这是可行的,但我不认为它是长期解决方案,如果有任何想法/改进或建议,我将不胜感激。
Stackblitz 示例:https://stackblitz.com/edit/angular-cccnjp-3dieg1?file=app%2Fsidenav-responsive-example.css
【问题讨论】:
-
根据文档,
rowHeight-"fit"仅在网格列表的父容器上设置了高度时才有效,但我尝试了它仍然没有用。您可以尝试将rowHeight设置为物理值,例如484px或calc(),但这在实际应用中可能不可行。 -
是的,我在上面添加了一些代码/css 以使其按我的意愿工作,但它并不漂亮。
-
这会起作用,而且不会那么“糟糕”: .custom-mat-list { /* 这很糟糕! */ 位置:绝对;顶部:48px; }
标签: css angular angular-material2