[英]Fixed table header with responsive table not working
我正在嘗試修復我的表頭,一旦它向下滾動它固定在頂部位置。
我設法通過使用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
。 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.