У меня есть следующий шаблон с шаблоном сетки и некоторыми кнопками, которые скрывают и показывают 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>
Как вы можете видеть, я пытался добавить несколько классов, когда div1
или div4
удалены из DOM, и я играю с grid-area
. Оно работает. Но мне интересно, есть ли более автоматизированный c способ сделать это?
Вот стек, который показывает мое рабочее решение https://stackblitz.com/edit/angular-rp5xkh