CSS-粘性网格标题

问题描述 投票:0回答:1

我正在尝试从网格中的一组单元格创建粘性标头。

这是代码:

.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>

我在这里做错了什么?如何使红细胞“粘住”?是解决此类问题的正确方法,还是应该将标头分隔为其他组件?谢谢

html css position css-grid sticky
1个回答
0
投票

[容器的displaycontent时,容器不会发粘。

.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>

0
投票

删除标题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>
© www.soinside.com 2019 - 2024. All rights reserved.