javascript - 创建一个随着正文溢出而滚动的粘性表头

标签 javascript jquery html css

我将表格标题固定在页面顶部。 我需要表格标题与正文内容一起水平滚动。

有没有办法通过堆叠或组合 CSS 行来实现此目的? 有没有办法在使用position:fixed后保留元素上继承的css?

请检查示例代码。

table#live {
  max-width: 995px;
  min-width: 995px;
}

table {
  width: 100%;
  margin: 10px 0 25px;
}

.custom {
  overflow-x: scroll;
  width: 100%;
  " 

}

thead.fixedheader {
  position: fixed;
  top: 0;
  background-color: grey;
}
<div class="custom">
  <table id="live">

    <thead class="fixedheader">
      <tr>
        <th>hddddddddddddddddddddd1</th>
        <th>hddddddddddddddddddddd2</th>
        <th>hddddddddddddddddddddd3</th>
        <th>hddddddddddddddddddddd4</th>
        <th>hddddddddddddddddddddd5</th>
        <th>hddddddddddddddddddddd6</th>
        <th>hddddddddddddddddddddd7</th>
      </tr>
    </thead>
    <tbody>

      <td class="tname">
        body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
      </td>
      <td>
        body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>
      <td>
        body3
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>
      <td>
        body4
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>
      <td>
        body5
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>
      <td>
        body6
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>
      <td>
        body7
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body1
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
        <br>body2
      </td>


    </tbody>
  </table>
</div>

最佳答案

你听说过position:sticky吗? https://css-tricks.com/position-sticky-2/您可以使用此技术将标题垂直固定到位,但仍然水平滚动。

示例如下。这样做的缺点是,并非所有浏览器都完全支持它,因此如果您需要 IE 支持 http://caniuse.com/#feat=css-sticky或更旧的 chrome/safari,您需要为这些浏览器提供某种解决方法(我怀疑使用 JavaScript,除非某些 CSS 忍者有更好的主意!)。

table#live {
    max-width: 995px;
    min-width: 995px;
}
    
table {
    width: 100%;
    margin: 10px 0 25px;
    
}

.custom {
     width:100%;" 
}

thead.fixedheader th {
    position: sticky;
    position: -webkit-sticky;
    position: -moz-sticky;
    top: 0;
    background-color: grey;
}
<html>
<div class="custom">
<table id="live">

  <thead class="fixedheader">
    <tr>
      <th>hddddddddddddddddddddd1</th>
      <th>hddddddddddddddddddddd2</th>
      <th>hddddddddddddddddddddd3</th>
      <th>hddddddddddddddddddddd4</th>
      <th>hddddddddddddddddddddd5</th>
      <th>hddddddddddddddddddddd6</th>
      <th>hddddddddddddddddddddd7</th>
    </tr>
  </thead>
  <tbody>

    <td class="tname">
      body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
    </td>
    <td>
      body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>
    <td>
      body3
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>
    <td>
      body4
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>
    <td>
      body5
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>
    <td>
      body6
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>
    <td>
      body7
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body1
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
      <br>body2
    </td>


  </tbody>
</table>
</div>
</html>

关于javascript - 创建一个随着正文溢出而滚动的粘性表头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46554082/

相关文章:

javascript - 用不同的参数替换图像源字符串的后部

jquery - 使用JS按百分比部分实现一个CSS类

col、row 和 square 上的 Javascript 表验证

javascript - 正则表达式 : replace everything but not a specific word

html - CSS 显示调整大小和裁剪的图像

javascript - Python 中使用 Selenium 停止动态页面滚动

php - 尝试发送电子邮件时 php 出错

javascript - jQueryui 可拖动项类

javascript - 如何更改 cytoscape.js 中叠加层的形状和 z 索引?

javascript - 动态创建 html div jinja2 和 ajax