我想要做的是让一组 div 使用 display:table、display:table-row 等来做一个表。所有这个表都包含在另一个有滚动条的 div 容器中。当我滚动这个外部容器时,我希望第一行滚动并保持可见
如果我有以下 html
<div class="tableContainer">
<div class="divTable">
<div class="divRow headerRow">
<div class="divCell header">A</div>
<div class="divCell header">B</div>
<div class="divCell header">C</div>
<div class="divCell header">D</div>
<div class="divCell header">E</div>
<div class="divCell header">F</div>
<div class="divCell header">G</div>
<div class="divCell header">H</div>
</div>
<div class="divRow">
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
<div class="divCell">something</div>
</div>
<!--repeat above row a bunch of times to make the scrollbar appear-->
</div>
</div>
和以下CSS
.tableContainer {
height: 500px;
overflow: auto;
}
.divTable {
display: table;
position: relative;
}
.divRow {
display: table-row;
}
.headerRow {
display: table-row;
position: fixed;
top: 0px;
left: 0px;
z-index: 1000;
background-color: white;
}
.divCell {
display: table-cell;
padding: 3px;
}
.header {
font-weight: bold;
}
和下面的 JQuery 脚本
$('.tableContainer').scroll(function() {
$('.headerRow').css('top', $('.tableContainer').scrollTop() + 'px');
});
如果我运行上面的东西,我可以看到 headerRow 的顶部发生了变化,但显然它永远不会移动,它只是停留在表格的顶部并滚动到视野之外。我可以让它向下滚动的唯一方法是,如果我将 headerRow 类更改为绝对定位,但如果我这样做,那么它会破坏列宽,并且标题行与详细信息行的列宽不同。