ページの中央にテーブルのヘッダーがありますが、ページが大きいので、ページを下にスクロールしながら、ヘッダーをブラウザーの上部に固定したいと思います...
だから私の質問は:ユーザーが下にスクロールしてヘッダーの上部の境界線がブラウザの境界線に触れるまで、ヘッダーを通常に設定するにはどうすればよいですか?ユーザーがどれだけ下にスクロールしても、ヘッダーはその位置に固定されたままになりますか?
ページの中央にテーブルのヘッダーがありますが、ページが大きいので、ページを下にスクロールしながら、ヘッダーをブラウザーの上部に固定したいと思います...
だから私の質問は:ユーザーが下にスクロールしてヘッダーの上部の境界線がブラウザの境界線に触れるまで、ヘッダーを通常に設定するにはどうすればよいですか?ユーザーがどれだけ下にスクロールしても、ヘッダーはその位置に固定されたままになりますか?
これをどのように行うことができるかについて説明させてください。
position
scroll
イベントにリスナーを追加します。ここにあるフィドルを投稿しました。
<div class='lots_of_stuff_in_here'> ... </div>
<table>
<thead id='my_fixable_table_header'>
<tr>
<th>My awsesome header number 1</th>
<th>My awsesome header number 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content</td>
<td>Content</td>
</tr>
// much more content
</tbody>
</table>
// Just so you get the idea behind the code
var myHeader = $('#my_fixable_table_header');
myHeader.data( 'position', myHeader.position() );
$(window).scroll(function(){
var hPos = myHeader.data('position'), scroll = getScroll();
if ( hPos.top < scroll.top ){
myHeader.addClass('fixed');
}
else {
myHeader.removeClass('fixed');
}
});
function getScroll () {
var b = document.body;
var e = document.documentElement;
return {
left: parseFloat( window.pageXOffset || b.scrollLeft || e.scrollLeft ),
top: parseFloat( window.pageYOffset || b.scrollTop || e.scrollTop )
};
}
</ p>
スクロールしながらページを下に移動する、水平方向の「スティッキーボックス」を探しています。
サイドバーにこの効果を作成する方法を説明するウォークスルーは次のとおりです。http://css-tricks.com/scrollfollow-sidebar/
ページの幅にまたがる一般的な例で動作するようにコードを変更しました。
<div class="wrapper">
<div class="head">HEAD</div>
<div class="header">Table Header</div>
<div class="content">Content</div>
<div class="footer">Footer</div>
</div>
.wrapper {
border:1px solid red;
}
.head{
height: 100px;
background: gray;
}
.header {
background:red;
height:100px;
left:0;
right:0;
top:0px;
margin-top:100px;
position:absolute;
}
.content {
background:green;
height:1000px;
}
.footer {
background:blue;
height:100px;
}
$(function() {
var $sidebar = $(".header"),
$window = $(window),
offset = $sidebar.offset(),
topPadding = 0;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
$sidebar.stop().animate({
top: $window.scrollTop() - offset.top + topPadding
});
} else {
$sidebar.stop().animate({
top: 0
});
}
});
});
これにより、元の表示位置を超えてスクロールすると、ヘッダーブロックがアニメーション化されて表示されます。
ヘッダーの下の下部の要素を1つのdivで囲み、そのdivにクラスを追加してオーバーフローを自動に設定することができます
私はあなたがこのヘッダー修正デモのように見えることを願っています
HTML
<div class="wrapper">
<div class="header">Header Fix</div>
<div class="content">Content</div>
<div class="footer">Footer</div>
</div>
CSS
.wrapper {
border:1px solid red;
}
.header {
background:red;
height:100px;
position:fixed;
left:0;
right:0;
top:0;
}
.content {
background:green;
height:1000px;
}
.footer {
background:blue;
height:100px;
}
ブロック要素の位置を固定するには、スタイルのdisplay属性でabsoluteプロパティまたはfixedプロパティを使用する必要がありますが、十分なスペースを確保して上部の要素を分割することを忘れないでください。そうしないと、ヘッダーセクションの下に配置されます。
$(window).scroll(function() {
if ($(this).scrollTop() > 100){
$('header').addClass("sticky");
}
else{
$('header').removeClass("sticky");
}
});
css:
header.sticky {
font-size: 24px;
line-height: 48px;
height: 48px;
background: #efc47D;
text-align: left;
padding-left: 20px;
}
これは、固定ヘッダー、フッター、および列を使用した完全に機能するバージョンです。
位置相対のクラスを適用します。そうしないと、固定列がヘッダーとフッターに重なり、必要に応じてテーブルレベルでクラスを定義します: "sticky-table"(必須)、 "sticky-header"、 "sticky-列」、「スティッキーフッター」、関数「applyStickyHeaders」を呼び出すよりも。それで全部です!
$(function(){
applyStickyHeaders();
});
完全な例:
https://jsfiddle.net/pintilies/6zLyxewg/4/
IE、FireFox、Chromeでテスト済み。