我正在查看有关此 SO 问题的代码,并认为它在切换 div 的可见性(如导航栏)时很有用,这取决于页面上的另一个元素是否在屏幕上可见。这是我从页面中使用的代码:
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((docViewTop < elTop) && (docViewBottom > elBottom));
}
我尝试构建一个函数来做到这一点,但不幸的是我在编程方面很烂。这是我使用的:
$('#magicnav').hide();
var intro = $('#intro');
$(document).ready(function () {
if (intro.isScrolledIntoView()) {
$('#magicnav').fadeOut();
} else {
$('#magicnav').fadeIn();
}
});
我也试过这个说法if(isScrolledIntoView($intro))
,但显然这也是不正确的。谁能帮我吗?
这是页面的jsfiddle供参考。我的目标是在屏幕顶部有一个固定的导航栏,仅在特定 div(也包含导航链接)不在屏幕上时显示。
你可能会注意到我把'magicnav' div 卡在了页面的中间。这是故意的,因为我想防止它目前被固定在顶部,并且需要确保我可以快速查看我的 jQuery 是否正常工作。