我正在尝试制作一个带有“粘性”表头的表格。我将位置设置为绝对,它就可以工作了,但是现在标题水平溢出了表格边框,甚至覆盖了滚动条。如何才能使元素成为绝对元素,但在视觉上仍然包含在其父元素中?
很难准确地显示我的代码,因为我正在尝试修改Kibana,并且涉及许多不同的文件,但这里是我在简化示例中最好的尝试:
HTML:
<div>
<table>
<thead>
<tr class="headerRow">
<th>...</th>
...
</tr>
<tr class="headerRowInvisible">
<th>...</th>
...
</tr>
</thead>
<tbody>...</tbody>
</table>
</div>
CSS:
div {
z-index: auto;
flex: 1;
display: flex;
flex-direction: column;
height: 100%;
min-height: 26px;
position: relative;
}
table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
border-collapse: collapse;
border-spacing: 0;
}
.headerRow {
white-space: nowrap;
position: absolute;
background-color: white;
z-index: 50;
}
.headerRowInvisible {
white-space: nowrap;
visibility: hidden;
}
如果您想知道不可见的<tr>
,将位置设置为绝对会打乱表的其余部分的格式,并与其顶部重叠,因此我创建了一个具有正常位置的不可见的<tr>
,以便它可以创建空间并为表体提供正确的列宽。背景和z索引是这样的,当你向下滚动时,粘性标题将正确地覆盖正文。否则,你得到的文本顶部的文本,它看起来很混乱。
发布于 2020-10-20 23:54:48
使用top
、right
和left
属性调整该绝对定位元素的位置,并在其下面的下一个非绝对定位元素上使用margin-top
来创建一些空间,以避免重叠。
https://stackoverflow.com/questions/64452592
复制相似问题