粘贴在thead上

Wil*_*Wit 29 html css3

您可能知道,position: sticky;已经登陆Webkit(演示).到目前为止,我可以看到这只适用于父元素.但是我想知道我是否可以在带有表格的滚动div中使用它.

所以它需要'监听'滚动事件,而div不是table.

我知道我可以用javascript和绝对定位来做到这一点,但我想知道是否sticky-positioning支持这个.

Evo*_*lve 63

位置上粘THEAD日在2018年的作品!

在样式表中只需添加以下一行:

thead th { position: sticky; top: 0; }
Run Code Online (Sandbox Code Playgroud)

你的桌子需要包括theadth为此风格.

<table>
    <thead>
        <tr>
            <th>column 1</th>
            <th>column 2</th>
            <th>column 3</th>
            <th>column 4</th>            
        </tr>    
    </thead>
    <tbody>
      // your body code
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

此外,如果thead中有多行,则可以选择第一行保持粘性:

thead tr:first-child th { position: sticky; top: 0; }
Run Code Online (Sandbox Code Playgroud)

截至2018年3月,现代浏览器的支持几乎都是支持ref:https://caniuse.com/#feat=css-sticky

这个奖励归功于@ ctf0(参考评论发表于2017年12月3日)

  • 由于以下错误,它无法按预期运行(`thead {position:sticky}`):https://bugs.chromium.org/p/chromium/issues/detail?id=702927 (3认同)
  • 很好的答案。诀窍是该位置必须位于第 th 个元素上,并且父元素不能有溢出:隐藏。 (3认同)
  • 重要的是要在这里添加:firefox 能够粘住整个 THEAD,即使它有多个 TR。Chrome 不能。您必须单独粘贴所有单元格,并给第一行单元格“top:0”和后续行“top:20px”,“top:40px”等......可怕的DX (3认同)
  • 如果我在剧院中有多排行,那可以工作吗? (2认同)
  • 父元素需要默认溢出,您可以使用“overflow:visible”重置。对于父元素上的“hidden”和“auto”,粘性都被“破坏”了。 (2认同)

小智 13

如果您只需要chrome的标头,那么您可以为元素中的元素设置position: sticky; top: some_value(top属性是必需的).tdthead

看到:

<table border=1>
  <thead>
    <tr>
      <td style='position: sticky; top: -1px;background: red'>Sticky Column</td>
      <td>Simple column</td>
    </tr>
  </thead>
Run Code Online (Sandbox Code Playgroud)

有一个stiky标头的桌子

  • 对我来说,解决方案是'thead th {position:sticky; 顶部:0;}` (3认同)
  • 太棒了......一直在寻找......这对chrome浏览器很有帮助......你还需要正确设置背景颜色和颜色以匹配......可能对某人有帮助。 (2认同)

cze*_*rny 8

position: sticky 不适用于表元素(只要它们的display属性以其开头table-),因为表不是规范的一部分:

其他模块中描述了其他类型的布局,例如表格,"浮动"框,红宝石注释,网格布局,列和正常"流"内容的基本处理.

  • 不确定.Mozilla显然正致力于发布这个:https://bugzilla.mozilla.org/show_bug.cgi?id = 975644 (2认同)