我不确定这是否是“Angular Material”的做事方式。但我能感觉到你的痛苦。
目前,我正在将一些 Bootstrap 代码迁移到 Angular Material,并且确实需要一种方法。
这就是我所做的。
由于 Angular Material 的 layout 指令只影响直接子级,我相信这是 Angular Material 的一种操作方式。因此,在 layout div 上,我添加了一个类 gutter,这是该类附带的 SASS(更漂亮的 CSS,带有变量):
.gutter {
(greater-than) * {
padding-right: $layout-gutter-width;
~ * {
padding-left: $layout-gutter-width;
}
&:last-of-type {
padding-right: 0;
}
}
}
注意 - 我不知道如何将> 放在那里,所以用“(大于)”代替它
解释
$layout-gutter-width 实际上是由 Angular Material 附带的 angular-material.scss 定义的(我在我的项目中使用 SASS),但你可以将它设置为任何你想要的,CSS 或SASS,10px,16px,50px,随便什么。
对于那些不完全熟悉此 SASS 中发生的事情的人:
> * 这里的意思是“...的任何直系后代”
~ * 这里的意思是“...的任何直系兄弟姐妹”
&:last-of-type 这里的意思是“这些直系后代中的最后一个……”
因此,对于具有类gutter 的元素的每个直接后代,我们添加padding-right。对于每个后续的兄弟元素,我们添加padding-left,对于最后一个元素,我们删除padding-right。第一个元素没有padding-left,最后一个元素没有padding-right。
最终这得到了我们想要的填充。
<div layout="row" class="gutter" layout-align="center center">
<div flex="50">
...
</div>
<div flex="50">
...
</div>
</div>