如何使表格列在Angular 2中冻结的多列可滚动?

Posted

技术标签:

【中文标题】如何使表格列在Angular 2中冻结的多列可滚动?【英文标题】:How to make table column scrollable with multiple columns frozen in Angular 2? 【发布时间】:2017-10-16 12:42:23 【问题描述】:

我有一个表,其中包含 3 列,需要始终保持在左侧,列包含网格,每个网格元素代表一天中的一小时,所以我需要该列是可滚动的。我尝试了许多建议的解决方案,但其中大多数都使用绝对位置,这是一个糟糕的笑话,因为当我使用它时,我失去了桌子的优势,例如行的高度变化,那些绝对定位不跟随。另一个问题是 table 由几个 Angular 2 组件组成,它不仅仅是普通的 html,这使得它更难。有没有比使用绝对位置更好的解决方案?

【问题讨论】:

我们可以看一些您尝试过的代码示例吗? 【参考方案1】:

我采用了这种方法。我不适用于垂直和水平方向。

https://plnkr.co/edit/MWFJuiWsUoo39xbCwAKI?p=preview

onScrollA($evt) 
   this.divC.nativeElement.scrollLeft = evt.srcElement.scrollLeft;

【讨论】:

【参考方案2】:

也许可以试试position: sticky; 但是没有代码,很难看出问题出在哪里。

【讨论】:

【参考方案3】:

好吧,最后我还是选择了这个解决方案: Fix and Scrollable table structure using html div

它仍然使用绝对列以及固定的宽度和边距,但只要它有效,我就可以忍受。关于表示表格行的Angular组件元素,我只是给它display: table-row,并简单地将td标签放在里面,所以不再需要使用tr。

【讨论】:

以上是关于如何使表格列在Angular 2中冻结的多列可滚动?的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL如何在同一表格多列名称中查找数据相对应的名称

表头如何固定下拉表头不动

如何使双列表格响应第二列在第一列之下?

excel冻结表格首行的方法是啥

冻结 HTML 表格的多行多列

如何冻结 PrimeNg 数据表中的列 - Angular 2?