【发布时间】:2020-01-17 14:27:54
【问题描述】:
我有以下带有网格模板的模板和一些隐藏和显示div1 和div4 的按钮,div2 和div3 的区域应该相应扩大。我希望当div1 不存在时,div2 和div3 区域应该向左扩展(从column 1 开始而不是column 2),同样div3 应该在column 6 结束时div4 不存在。
.parent {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(5, 1fr);
grid-column-gap: 0px;
grid-row-gap: 0px;
height: 500px;
}
.parent div {
border: 1px black solid;
}
.div1 {
grid-area: 1 / 1 / 6 / 2;
}
.div2 {
grid-area: 1 / 2 / 2 / 6;
}
.div2.expandedLeft {
grid-area: 1 / 1 / 2 / 6;
}
.div3 {
grid-area: 2 / 2 / 6 / 5;
}
.div3.expandedLeft {
grid-area: 2 / 1 / 6 / 5;
}
.div3.expandedRight {
grid-area: 2 / 2 / 6 / 6;
}
.div3.expandedLeft.expandedRight {
grid-area: 2 / 1 / 6 / 6;
}
.div4 {
grid-area: 2 / 5 / 6 / 6;
}
<div class="parent">
<div class="div1" *ngIf="!hideDiv1"></div>
<div class="div2" [class.expandedLeft]="hideDiv1"></div>
<div class="div3" [class.expandedLeft]="hideDiv1" [class.expandedRight]="hideDiv2"></div>
<div class="div4" *ngIf="!hideDiv2"></div>
</div>
<div>
<button (click)="hideDiv1 = true">hide it</button>
<button (click)="hideDiv1 = false">show it</button>
</div>
<div>
<button (click)="hideDiv2 = true">hide it</button>
<button (click)="hideDiv2 = false">show it</button>
</div>
如您所见,我尝试在从 DOM 中删除 div1 或 div4 时添加一些类,我使用 grid-area。有用。但我想知道是否有更自动的方法?
这是一个堆栈闪电战,展示了我的工作解决方案https://stackblitz.com/edit/angular-rp5xkh
【问题讨论】: