You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular动态mat-expansion面板布局问题:消除侧边空白

解决Angular mat-expansion面板展开时右侧空白问题

问题根源是Bootstrap的col元素高度由自身内容决定,当同一行中某个面板展开导致所在col高度增加时,另一列高度未同步,从而出现空白。以下是两种可行的解决方法:

方法一:利用Bootstrap内置类实现等高列

修改row的类,添加align-items-stretch让所有列拉伸至同一行最高元素的高度,同时给mat-expansion-panel添加h-100类使其填满父容器:

<div class="row align-items-stretch">
    <div class="col-lg-6 col-md-6 col-sm-12 mt-3" *ngFor="let item of autoPanel; let idx = index">
        <mat-expansion-panel class="ml-2 mr-2 h-100" (click)="getCurrentKPIName(item,idx)">
            <mat-expansion-panel-header>
                <mat-panel-title class="d-flex align-items-center justify-content-between">
                    {{ item.name }}
                </mat-panel-title>
            </mat-expansion-panel-header>
            <!-- 面板展开内容 -->
        </mat-expansion-panel>
    </div>
</div>

方法二:使用CSS Grid布局替代Bootstrap Row/Col

Grid布局默认保证同一行单元格等高,更适合这种动态高度的场景:

HTML代码

<div class="expansion-grid">
    <div class="grid-item mt-3" *ngFor="let item of autoPanel; let idx = index">
        <mat-expansion-panel class="ml-2 mr-2" (click)="getCurrentKPIName(item,idx)">
            <mat-expansion-panel-header>
                <mat-panel-title class="d-flex align-items-center justify-content-between">
                    {{ item.name }}
                </mat-panel-title>
            </mat-expansion-panel-header>
            <!-- 面板展开内容 -->
        </mat-expansion-panel>
    </div>
</div>

CSS样式

.expansion-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 1rem;
    padding: 0 0.5rem;
}

.grid-item {
    display: flex;
}

两种方法都能确保面板展开时,同一行的列高度同步,消除空白区域。

内容的提问来源于stack exchange,提问作者Subash P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:53:21