【发布时间】:2018-03-01 21:46:00
【问题描述】:
我有一个用 div 制作的表格,使用 flexbox 来获得我的 div 的漂亮表格格式。
现在我得到了这样的结构:
<div class="tableWrapper">
<div class="tableHeader">
<div class="tableHeaderRow">
<div class="tableHeaderCells"></div>
<div class="tableHeaderCells"></div>
</div>
</div>
<div class="tableBody">
<div class="tableBodyRow">
<div class="tableBodyCells"></div>
<div class="tableBodyCells"></div>
</div>
<div class="tableBodyRow">
<div class="tableBodyCells"></div>
<div class="tableBodyCells"></div>
</div>
<div class="tableBodyRow">
<div class="tableBodyCells"></div>
<div class="tableBodyCells"></div>
</div>
</div>
所以现在我想要实现的是让“tableHeader”始终保持在同一位置,所以当“tableBody”内容很大(可能有 50 行)并且不适合浏览器屏幕时,当用户向下滚动时,标题会跟随,因此它始终可见。
我尝试使用position:fixed,但它弄乱了“tableBody”内容。
这里是当前的css:
.tableWrapper {
width: 100%;
height: 100%;
margin-top: 15px;
position: relative;
}
.tableHeader {
width: 100%;
position: relative;
}
.tableHeaderRow {
display: flex;
height: 35px;
border-bottom: 1px solid #000;
align-items: center;
}
.tableHeaderCells {
display: flex;
border-top: 1px solid #000;
border-bottom: none;
border-left: 1px solid #000;
border-right: 1px solid #000;
align-items: center;
justify-content: center;
font-weight: bold;
height: 100%;
width: 100%;
}
.tableBodyCells {
display: flex;
border-top: none;
border-bottom: none;
border-right: 1px solid #000;
border-left: 1px solid #000;
height: 100%;
width: 100%;
align-items: center;
justify-content: center;
}
.tableBody {
width: 100%;
height: 100%;
position: relative;
}
.tableBodyRow {
display: flex;
height: 50px;
width: 100%;
align-items: center;
border-bottom: 1px solid #000;
border-top: 1px solid #000;
margin-bottom: 2px;
}
这里有一个小提琴:jsfiddle
所以我想要获得的最终结果是,对于超过 50 行的正文,我希望用户能够向下滚动,同时将标题始终留在屏幕上,而且“滚动大小”是一个加号(不知道怎么称呼)等于行高,意思是当用户滚动一次时,它会下降一个固定的量,并在标题下准确地放置一个正文行,以避免当用户滚动你时得到标题,然后在它下面切半排,希望你明白我的意思!
【问题讨论】: