我正在尝试在向下滚动时使表头粘在顶部。
我正在使用此处提供的解决方案:css-tricks.com/persistent-headers /.
但是当我尝试使用它时,表头不会保持其宽度。
function UpdateTableHeaders() {
$(".persist-area").each(function() {
var el = $(this),
offset = el.offset(),
scrollTop = $(window).scrollTop(),
floatingHeader = $(".floatingHeader", this)
if ((scrollTop > offset.top) && (scrollTop < offset.top + el.height())) {
floatingHeader.css({
"visibility": "visible"
});
} else {
floatingHeader.css({
"visibility": "hidden"
});
};
});
}
$(function() {
var clonedHeaderRow;
$(".persist-area").each(function() {
clonedHeaderRow = $(".persist-header", this);
clonedHeaderRow
.before(clonedHeaderRow.clone())
.css("width", clonedHeaderRow.width())
.addClass("floatingHeader");
});
$(window)
.scroll(UpdateTableHeaders)
.trigger("scroll");
});
.floatingHeader {
position: fixed;
top: 0;
visibility: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<table class="persist-area">
<tr class="persist-header">
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>Austria</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>Italy</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>Germany</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>Mexico</td>
</tr>
</table>
如何使表格列对齐并且看起来自然?
任何帮助都将受到高度赞赏!
答案 0 :(得分:0)
尝试添加:
left: 0
right: 0
width: 100%
到您的.floatingHeader
班级
答案 1 :(得分:0)
好吧,当您将position: fixed;
放在克隆的标题行上时,它不再位于表的上下文中,因为它是fixed
。这意味着标题单元格宽度不会占用数据单元格宽度的宽度,因为固定标题不再是表格的一部分。
即使您将克隆标题的宽度设置为与&#34;未固定的#34;标题行,如果没有设置宽度,单元格将只占用其单元格内容的宽度。因此,你得到了#34;倒塌&#34;看看你的形象。
要解决此问题,您需要明确设置.floatingHeader
的单元格宽度以匹配表格单元格的单元格宽度。您还需要将display
的{{1}}设置为.floatingHeader
,使其行为类似于表格,因为请记住它不再位于表格的上下文中。
因此,您更新的CSS可能如下所示:
table
请参阅this fiddle了解演示。
<强>更新强>
要将标题大小与浏览器窗口大小调整大小同步,您可以附加同步固定标题和原始标题宽度的事件:
.floatingHeader {
position: fixed;
top: 0;
visibility: hidden;
display: table; /*Added*/
}
.floatingHeader th,
.persist-area th,
.persist-area td {
padding: 2px 10px;
width: 33%; /*All cells must match widths*/
}
请参阅此fiddle了解演示(调整框架窗口大小)