このサイドバーを再現しようとしています:
ページを下にスクロールしているように見えますが、サイドバーの一番下に到達すると (メイン コンテナーに表示するコンテンツがまだある限り)、サイドバーは Web ページの一番下に固定されます。ただし、上にスクロールすると、サイドバーが上にスクロールします..
これをどのように再現できますか?
乾杯!
このサイドバーを再現しようとしています:
ページを下にスクロールしているように見えますが、サイドバーの一番下に到達すると (メイン コンテナーに表示するコンテンツがまだある限り)、サイドバーは Web ページの一番下に固定されます。ただし、上にスクロールすると、サイドバーが上にスクロールします..
これをどのように再現できますか?
乾杯!
私の答えのほとんどは、この質問から借りています。
これは、JavaScript/jQuery で使用する sidebarAnchor を使用した基本的な body/sidebar レイアウトです。
<div class="container">
<div class="body">
<!-- Body content -->
</div>
<div id="sidebarAnchor"></div>
<div class="sidebar" id="sidebar">
<!-- Sidebar Content -->
</div>
</div>
CSS。ここで最も重要なのは、jQuery で追加する .sticky クラスです。残りはデモ レイアウト用です。
div.container {
overflow: hidden;
width: 100%;
}
div.body {
width: 45%;
float: left;
}
div.sidebar {
width: 45%;
float: right;
}
.stick {
position: fixed;
bottom: 0;
right: 0;
}
そしてjQuery/JS。説明についてはコメントを参照してください。
$(document).ready(function() {
// Cache selectors for faster performance.
var $window = $(window),
$sidebar = $('#sidebar'),
$sidebarAnchor = $('#sidebarAnchor');
// Run this on scroll events.
$window.scroll(function() {
var window_top = $window.scrollTop();
var div_top = $sidebarAnchor.offset().top;
if (window_top > div_top) {
// Make the div sticky.
$sidebar.addClass('stick');
$sidebarAnchor.height($sidebar.height());
}
else {
// Unstick the div.
$sidebar.removeClass('stick');
$sidebarAnchor.height(0);
}
});
});
document.body.scrollTop + window.innerHeight
がサイドバーの高さ以上かどうかを確認します。