我正在尝试从网格中的一组单元格创建粘性标头。
这是代码:
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 50px;
height: 150px;
overflow: scroll;
position: relative;
}
.cell {
border: 1px solid black;
}
.header {
display: contents;
position: sticky;
top: 0;
}
.header > .cell {
background-color: red;
}
<div class="grid">
<div class="header">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
我在这里做错了什么?如何使红细胞“粘住”?是解决此类问题的正确方法,还是应该将标头分隔为其他组件?谢谢
[容器的display
为content
时,容器不会发粘。
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 50px;
height: 150px;
overflow: scroll;
position: relative;
}
.cell {
border: 1px solid black;
}
.header {
/* make this column span the whole row */
grid-column: 1 / -1;
/* inherit grid settings */
display: inherit;
grid-template-columns: inherit;
grid-auto-rows: inherit;
position: sticky;
top: 0;
}
.header > .cell {
background-color: red;
}
<div class="grid">
<div class="header">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
删除标题div并为其之前的div提供适当的位置。
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-auto-rows: 50px;
height: 100vh;
overflow: scroll;
position: relative;
}
.cell {
border: 1px solid black;
}
.header {
;
position: sticky;
top: 0;
background-color: red;
}
<div class="grid">
<div class="cell header"></div>
<div class="cell header"></div>
<div class="cell header"></div>
<div class="cell header"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>