使材料表列的内容动态宽度

Mar*_*rus 6 sass angular-material2 angular5

经过大量修改后,我终于为我的材质表有了一个不错的设置。它有分页,有排序,有我需要的所有东西。然而,它看起来不太对劲,因为我的几个列都是单位数字值,并且它们与我希望更大的列具有相同的宽度(例如过度包装的描述)。

由于对 scss (以及与此相关的 css )缺乏经验,我不知道如何解决这个问题。我尝试以几乎所有我能想到的方式修改 flex 属性,但它似乎没有改变任何事情。

这个问题更加复杂,因为我无法轻松地使用材料表的“hack”来根据列标识符生成类,因为列是动态生成的。我也可以传递宽度信息,但这似乎是一个无法维护的黑客行为。

有没有一种方法可以将样式应用于整个表格和标题,从而获得所需的外观?

Ber*_*eSF 8

我在 Angular10 中成功使用了它。

首先,用 div 包裹表格,如下所示:

<div class='table-responsive'>
   <mat-table>
      ....
   </mat-table>
</div>
Run Code Online (Sandbox Code Playgroud)

然后添加这个CSS

.table-responsive {
 display: block;
 width: 100%;
 overflow-x: auto;
}

.mat-table {
 width: 100%;
 max-width: 100%;
 margin-bottom: 1rem;
 display: table;
 border-collapse: collapse;
 margin: 0px;
}

.mat-row,
.mat-header-row {
 display: table-row;
}

.mat-cell,
.mat-header-cell {
 word-wrap: initial;
 display: table-cell;
 padding: 0px 5px;
 line-break: unset;
 width: auto;
 white-space: nowrap;
 overflow: hidden;
 vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

这将根据内容调整单元格的大小,并使您的表格可以水平滚动!


小智 2

假设您确实指的是角度材料表,这个可能会有所帮助: md-table - 如何更新列宽