我有一个包含大量列的简单表,我希望在调整浏览器窗口大小时自动收缩列。 table-responsive
适用于Bootstrap,但我正在为Angular Material寻找类似的东西。我试图避免有2个表定义,并且我真的不想在CSS中自己这样做。 Angular Material中有标准的方法吗?
<table class="mdl-data-table mdl-js-data-table mdl-shadow--2dp" flex>
<thead>
<th class="mdl-data-table__cell--non-numeric">Date</th>
<th class="mdl-data-table__cell--non-numeric">Time</th>
<th class="mdl-data-table__cell--non-numeric">Park</th>
<th class="mdl-data-table__cell--non-numeric">Home Team</th>
<th class="mdl-data-table__cell--non-numeric">Away Team</th>
<th class="mdl-data-table__cell--non-numeric">Win/Loss</th>
</thead>
<tbody>
<tr ng-repeat="game in games">
<td class="mdl-data-table__cell--non-numeric">{{game.GameDate | SLS_Date}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.GameTime | SLS_Time:'HH:mm' }}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.VenueName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.HomeTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.AwayTeamName}}</td>
<td class="mdl-data-table__cell--non-numeric">{{game.WinLoss}}</td>
</tr>
</tbody>
</table>
注意,我在这里使用了Material Design Lite表,因为Angular Material今天没有表。同样的问题,包括使用flex和grid。
我猜新的Material世界不喜欢表格,所以最好的选择是将布局更改为不使用表格。
答案 0 :(得分:6)
我创建了一个小指令,可以将其应用于mat-table
表以使其具有响应性。这样,仅将响应行为添加到应用程序中的某些表就很容易了(这是我的要求)。因此,基本上,该伪指令将每个标头单元格(列名称)的内容复制为数据属性,以便可以通过CSS content
属性(受此article启发)对其进行访问。不幸的是,CSS样式无法应用于指令,因此需要将样式全局导入。
功能:
这是一个小小的堆叠演示:
https://stackblitz.com/edit/material-table-responsive
这不应被视为一般解决方案,因为它当然不能涵盖所有用例。此外,表格移动视图的样式也受我的特定要求约束,可能需要进行调整。但是我只想分享它,以便它可以作为其他人的起点和服务。
答案 1 :(得分:2)
目前无法在MDL中实现此目的,请在github上查看this问题。
我的桌子遇到了同样的问题,但我想我必须让他们自己回应。那里有很多教程和&amp;你应该做一些研究,哪种桌面设计最适合你的响应网站。
另外,我认为值得查看materializecss&#39; responsive tables
答案 2 :(得分:0)
一个简单的解决方案是用具有以下样式的 <div>
包裹您的表格:
width: 100%;
overflow-x: auto;