OK、これが私がこれにアプローチする方法です。
まず、次のような「ターゲット」div があります。
<div id="fixedHeader">
<table>
<thead></thead>
</table>
</div>
次の CSS があります。
#fixedHeader
{
位置: 固定;
上: 0;
float、left、right、margin など: 必要に応じて。
}
#fixedHeader:not(.active)
{
表示: なし;
}
ページが最初に読み込まれるときに、テーブルthead
をこの div にコピーします。次に、ユーザーがスクロールしてテーブルの上部が見えなくなったら、これを表示します。上にスクロールしたら、もう一度非表示にします。active
クラスを追加/削除することで、非表示と表示を行います。
$(document).ready(function() {
// copy over the thead
$('#fixedHeader > table > thead').html($('#theTable > thead').html());
// show or hide the div as necessary.
$(window).scroll(function() {
if ( $('#theTable > thead').offset.top < $(window).scrollTop() )
{
$('#fixedHeader').addClass('active');
}
else
{
$('#fixedHeader').removeClass('active');
}
});
});
ユーザーがテーブルの最後を超えてスクロールできる場合、問題が発生します。必要に応じて、そのケースの if 条件を展開できます。