Material 网格列表在 Material 网格图块中是否可能(嵌套网格)?
Material grid list in Material grid tile possible (nested grids)?
我猜,不允许在material格子里放一个material格子(嵌套格子)?
有人可以证实我的假设吗?
(我正在使用 Angular Material 6。)
<mat-grid-list cols="6" gutterSize="32px">
<mat-grid-tile [colspan]="3">
left
<mat-grid-list cols="3" gutterSize="8px">
<mat-grid-tile>1</mat-grid-tile>
<mat-grid-tile [colspan]="2">2</mat-grid-tile>
<mat-grid-tile [colspan]="3">3</mat-grid-tile>
</mat-grid-list>
</mat-grid-tile>
<mat-grid-tile [colspan]="3">
right
<mat-grid-list cols="3" gutterSize="8px">
<mat-grid-tile>4</mat-grid-tile>
<mat-grid-tile [colspan]="2">5</mat-grid-tile>
<mat-grid-tile [colspan]="3">6</mat-grid-tile>
</mat-grid-list>
</mat-grid-tile>
</mat-grid-list>
结果应如下所示(两种不同的装订线尺寸):
我为什么要这个?我必须实施的设计在列之间具有不同的装订线尺寸:-/我认为网格中的网格是一个聪明的解决方案,但它不起作用。
更新:
建议的解决方案 here 不起作用,因为这仅适用于较旧的 AngularJS Material.
在尝试了所有我能想到的方法之后,我得出结论,material 网格在 material 网格中是不可能的 并且可能在概念上是不可能的意味着工作(可以理解)。
我决定使用 CSS 网格 (https://www.w3schools.com/css/css_grid.asp) 来解决我的问题。这有效(到目前为止):
<mat-grid-list cols="2" rowHeight="fit" gutterSize="32px">
<mat-grid-tile>
<div class="css-grid">
<div class="css-grid-tile top-left">
</div>
<div class="css-grid-tile top-right">
</div>
<div class="css-grid-tile bottom">
</div>
</div>
</mat-grid-tile>
<mat-grid-tile>
<div class="css-grid">
<div class="css-grid-tile top-left">
</div>
<div class="css-grid-tile top-right">
</div>
<div class="css-grid-tile bottom">
</div>
</div>
</mat-grid-tile>
.css-grid {
display: grid;
grid-gap: 8px;
grid-template-columns: 33% 67%; // two columns
grid-template-rows: 33% 67%; // two rows
height: 100%;
width: 100%;
.css-grid-tile {
&.top-left {
grid-column: 1 / 2;
}
&.top-right {
grid-column: 2 / 3;
}
&.bottom {
grid-column: 1 / 3;
}
}
}
我猜,不允许在material格子里放一个material格子(嵌套格子)?
有人可以证实我的假设吗?
(我正在使用 Angular Material 6。)
<mat-grid-list cols="6" gutterSize="32px">
<mat-grid-tile [colspan]="3">
left
<mat-grid-list cols="3" gutterSize="8px">
<mat-grid-tile>1</mat-grid-tile>
<mat-grid-tile [colspan]="2">2</mat-grid-tile>
<mat-grid-tile [colspan]="3">3</mat-grid-tile>
</mat-grid-list>
</mat-grid-tile>
<mat-grid-tile [colspan]="3">
right
<mat-grid-list cols="3" gutterSize="8px">
<mat-grid-tile>4</mat-grid-tile>
<mat-grid-tile [colspan]="2">5</mat-grid-tile>
<mat-grid-tile [colspan]="3">6</mat-grid-tile>
</mat-grid-list>
</mat-grid-tile>
</mat-grid-list>
结果应如下所示(两种不同的装订线尺寸):
我为什么要这个?我必须实施的设计在列之间具有不同的装订线尺寸:-/我认为网格中的网格是一个聪明的解决方案,但它不起作用。
更新: 建议的解决方案 here 不起作用,因为这仅适用于较旧的 AngularJS Material.
在尝试了所有我能想到的方法之后,我得出结论,material 网格在 material 网格中是不可能的 并且可能在概念上是不可能的意味着工作(可以理解)。
我决定使用 CSS 网格 (https://www.w3schools.com/css/css_grid.asp) 来解决我的问题。这有效(到目前为止):
<mat-grid-list cols="2" rowHeight="fit" gutterSize="32px">
<mat-grid-tile>
<div class="css-grid">
<div class="css-grid-tile top-left">
</div>
<div class="css-grid-tile top-right">
</div>
<div class="css-grid-tile bottom">
</div>
</div>
</mat-grid-tile>
<mat-grid-tile>
<div class="css-grid">
<div class="css-grid-tile top-left">
</div>
<div class="css-grid-tile top-right">
</div>
<div class="css-grid-tile bottom">
</div>
</div>
</mat-grid-tile>
.css-grid {
display: grid;
grid-gap: 8px;
grid-template-columns: 33% 67%; // two columns
grid-template-rows: 33% 67%; // two rows
height: 100%;
width: 100%;
.css-grid-tile {
&.top-left {
grid-column: 1 / 2;
}
&.top-right {
grid-column: 2 / 3;
}
&.bottom {
grid-column: 1 / 3;
}
}
}