【发布时间】:2019-06-18 08:40:11
【问题描述】:
我正在尝试修复我的表格标题,一旦它向下滚动并固定在顶部位置。
我已经设法通过制作 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>
【问题讨论】:
-
这里有一些其他的解决方案:stackoverflow.com/questions/21168521/…
标签: javascript html css