下面使用的功能isScrolledIntoView()
是另一个问题Check if element is visible after scrolling
实例说明
首先,我们具有功能isScrolledIntoView()
,如果元素在浏览器查看区域内可见,则该函数仅返回true
或false
。
您需要使用两个div或某种锚点和后续div。您的锚定div用于确定何时应将后续div切换为固定样式以跟踪滚动,或者如果锚点返回到视图中以将后续div返回到其在页面上的原始位置,则切换回绝对位置。
使用您的定位点跟踪div来检查元素在查看区域中是否可见,我们可以利用窗口上的jQuery .scroll()
事件绑定方法在用户滚动时触发事件页。
脚本示例
$(window).scroll(function() {
if (! isScrolledIntoView($('#anchor')))
{
// anchor div isn't visible in view so apply new style to follow div to follow on scroll
$('#follow').css({ position: 'fixed', top: '10px' });
}
else
{
// anchor div is visible in view so apply default style back to follow div to place in default position
$('#follow').css({ position: 'absolute', top: '100px' });
}
});
function isScrolledIntoView(elem)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}
Fiddle演示
设立顶部和左侧的#text –
看看这个:http://imakewebthings.github.com/jquery-waypoints/ – Purag