【发布时间】:2018-01-24 07:30:48
【问题描述】:
我正在使用带有 display:table 的 div,并且我正在尝试创建粘性标题。 Chrome 支持 position:sticky 和 display:table-row 但 Firefox 和 IE 不支持。因此,我创建了一个代码,将 div 位置在滚动时更改为“固定”,并将顶部更改为 0。这得到了相同的结果。
但是,当将位置更改为“固定”时,标题行不再是表格的一部分,因此它的宽度发生了变化。 (并且不再与其他表行同步)
我试图通过保存每列的宽度然后重新设置来修复它,但这非常有问题。
我正在寻找一种解决方案,可以让我将位置更改为“固定”,但不会更改顶行宽度,并且它将与表格的其余部分保持连接。
有什么想法吗?
$(window).scroll(function()
{
if (window.pageYOffset >= $('.table').offset().top)
{
$('.row_header').css('position','fixed');
$('.row_header').css('top',0);
}
else
{
$('.row_header').offset({ top: $('.table').offset().top});
$('.row_header').css('position','static');
//console.log('satic');
}
});
.wrapper{
padding:10px;
display:flex;
justify-content:center;
align-items:center;
}
.table{
display:table;
margin: 0 0 40px 0;
max-width: 100%;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border:1px solid black;
padding:2px;
}
.row_header {
display: table-row;
background: #ADD8E6;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
<p align=center><b>Scroll to see the problem...</b>
<div class="wrapper">
<div class="table">
<div class="row_header">
<div class="cell">Name</div>
<div class="cell">Age</div>
<div class="cell">Site</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
<div class="row">
<div class="cell">David</div>
<div class="cell">33</div>
<div class="cell">Stack overflow</div>
</div>
</div>
</div>
【问题讨论】:
标签: javascript jquery html css