修复了响应式表格不起作用的表头



一旦向下滚动,我正在尝试修复我的表标题,它固定在顶部位置。

我已经设法通过制作一个 javascript 来检测滚动位置,然后应用 css 使位置固定在顶部,从而设法修复了标题

但是标题的列大小会丢失,显然它变得更小了。

如果有人能够在这方面提供帮助,我将不胜感激?

<html>
<header>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<style>
.scroll{
   position: fixed;
   top: 0 !important;
}
#myDIV{
   background-color: #ccc;
}
header{
   height: 100px;
}
footer{
   height: 2000px;
}
</style>
</header>
<body> 
<table style="width:1900px" >
        <thead id="myDIV">
            <tr>
                <th style="width:25%"  >Column1</th>
                <th  style="width:25%" >Column2</th>
                <th  style="width:25%" >Column3</th>
                <th  style="width:25%" >Column4</th>
            </tr>
        </thead>
        <tbody >
            <tr>
                <td style="width:25%" >aaaaaaaaaaa</td>
                <td style="width:25%" >bbbbbbbbbbb</td>
                <td style="width:25%" >ccccccccccc</td>
                <td style="width:25%">ddddddddddd</td>         
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
            <tr>
                <td>aaaaaaaaaaa</td>
                <td>bbbbbbbbbbb</td>
                <td>ccccccccccc</td>
                <td>ddddddddddd</td>
            </tr>
        </tbody>
    </table>
<p id="demo" style="background-color:yellow">testest</p>
</body>
<script> 
window.onload = function(){
 document.addEventListener("scroll", myFunction);
 var i = 0;
 function myFunction() {
   document.getElementById("demo").innerHTML = "You scrolled in div." + i++;
  var lastScroll = document.getScroll();
   if(lastScroll[1] >= 100){
    document.getElementById("myDIV").classList.add('scroll');
   } else {
    document.getElementById("myDIV").classList.remove('scroll');
   }
 }
 document.getScroll = function() {
  if (window.pageYOffset != undefined) {
   return [pageXOffset, pageYOffset];
  } else {
  var sx, sy, d = document,
   r = d.documentElement,
   b = d.body;
   sx = r.scrollLeft || b.scrollLeft || 0;
   sy = r.scrollTop || b.scrollTop || 0;
  return [sx, sy];
  }

window.onload = function() {
  document.addEventListener("scroll", myFunction);
  var i = 0;
  function myFunction() {
    document.getElementById("demo").innerHTML = "You scrolled in div." + i++;
    var lastScroll = document.getScroll();
    if (lastScroll[1] >= 100) {
      document.getElementById("myDIV").classList.add('scroll');
    } else {
      document.getElementById("myDIV").classList.remove('scroll');
    }
  }
  document.getScroll = function() {
    if (window.pageYOffset != undefined) {
      return [pageXOffset, pageYOffset];
    } else {
      var sx, sy, d = document,
        r = d.documentElement,
        b = d.body;
      sx = r.scrollLeft || b.scrollLeft || 0;
      sy = r.scrollTop || b.scrollTop || 0;
      return [sx, sy];
    }
  }
}
.scroll {
  position: fixed;
  top: 0 !important;
}
#myDIV {
  background-color: #ccc;
}
header {
  height: 100px;
}
footer {
  height: 2000px;
}
<html>
<header>
</header>
<body>
  <table style="width:1900px">
    <thead id="myDIV">
      <tr>
        <th style="width:25%">Column1</th>
        <th style="width:25%">Column2</th>
        <th style="width:25%">Column3</th>
        <th style="width:25%">Column4</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="width:25%">aaaaaaaaaaa</td>
        <td style="width:25%">bbbbbbbbbbb</td>
        <td style="width:25%">ccccccccccc</td>
        <td style="width:25%">ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
    </tbody>
  </table>
  <p id="demo" style="background-color:yellow">testest</p>
</body>
<footer></footer>

window.onload = function() {
  document.addEventListener("scroll", myFunction);
  var i = 0;
  function myFunction() {
    document.getElementById("demo").innerHTML = "You scrolled in div." + i++;
    var lastScroll = document.getScroll();
    if (lastScroll[1] >= 100) {
      document.getElementById("myDIV").classList.add('scroll');
    } else {
      document.getElementById("myDIV").classList.remove('scroll');
    }
  }
  document.getScroll = function() {
    if (window.pageYOffset != undefined) {
      return [pageXOffset, pageYOffset];
    } else {
      var sx, sy, d = document,
        r = d.documentElement,
        b = d.body;
      sx = r.scrollLeft || b.scrollLeft || 0;
      sy = r.scrollTop || b.scrollTop || 0;
      return [sx, sy];
    }
  }
}
table {
  width: 1900px;
  position: relative;
}
.scroll {
  position: fixed;
  top: 0 !important;
  width: 1900px;
}
.scroll tr {
  display: flex;
}
.scroll th {
  display: block;
  width: 100%;
  border-right: 2px solid white;
}
#myDIV {
  background-color: #ccc;
}
header {
  height: 100px;
}
footer {
  height: 2000px;
}
<html>
<header>
</header>
<body>
  <table style="">
    <thead id="myDIV">
      <tr>
        <th style="width:25%">Column1</th>
        <th style="width:25%">Column2</th>
        <th style="width:25%">Column3</th>
        <th style="width:25%">Column4</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="width:25%">aaaaaaaaaaa</td>
        <td style="width:25%">bbbbbbbbbbb</td>
        <td style="width:25%">ccccccccccc</td>
        <td style="width:25%">ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
    </tbody>
  </table>
  <p id="demo" style="background-color:yellow">testest</p>
</body>
<footer></footer>

#myDIV{
    background: #ddd;
}
#myDIV th{
    text-align: left;
}
tbody {
    display:block;
    height:100px;
    overflow:auto;
}
thead, tbody tr {
    display:table;
    width:100%;
    table-layout:fixed;
}
<html>
<header>
</header>
<body>
  <table style="width:1900px">
    <thead id="myDIV">
      <tr>
        <th style="width:25%">Column1</th>
        <th style="width:25%">Column2</th>
        <th style="width:25%">Column3</th>
        <th style="width:25%">Column4</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="width:25%">aaaaaaaaaaa</td>
        <td style="width:25%">bbbbbbbbbbb</td>
        <td style="width:25%">ccccccccccc</td>
        <td style="width:25%">ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td style="width:25%">aaaaaaaaaaa</td>
        <td style="width:25%">bbbbbbbbbbb</td>
        <td style="width:25%">ccccccccccc</td>
        <td style="width:25%">ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
    </tbody>
  </table>
  <p id="demo" style="background-color:yellow">testest</p>
</body>
<footer></footer>

如果您不需要旧浏览器,您可以使用position: sticky . 粘性是 CSS-3 中的强大属性 了解粘性position sticky链接

如果您需要旧的浏览器支持,则可以跨浏览器使用jquery粘性表头

table thead,
table thead th {
  position: sticky;
  top: 0;
  background: #ccc;
}
header {
  height: 100px;
}
footer {
  height: 2000px;
}
<html>
<header>
</header>
<body>
  <table style="width:1900px">
    <thead>
      <tr>
        <th style="width:25%">Column1</th>
        <th style="width:25%">Column2</th>
        <th style="width:25%">Column3</th>
        <th style="width:25%">Column4</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="width:25%">aaaaaaaaaaa</td>
        <td style="width:25%">bbbbbbbbbbb</td>
        <td style="width:25%">ccccccccccc</td>
        <td style="width:25%">ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
      <tr>
        <td>aaaaaaaaaaa</td>
        <td>bbbbbbbbbbb</td>
        <td>ccccccccccc</td>
        <td>ddddddddddd</td>
      </tr>
    </tbody>
  </table>
  <p id="demo" style="background-color:yellow">testest</p>
</body>
<footer></footer>

最新更新