【发布时间】:2015-04-09 21:28:15
【问题描述】:
来自this article,
以最简单的形式,可以按如下方式检查元素:
$('#element').visible()如果整个元素可见(即, 如果该元素的任何部分在 视口。将 true 传递给 'visible' 方法,将告诉插件 如果元素的任何部分对用户可见,则返回 true 屏幕。
$('#element').visible( true )
在以下脚本中,if 块 if ( $('.firstPage').visible(true) ) ... 预计将在.firstPage div 的一部分在屏幕上可见时立即执行滚动。
但问题是只要整个.firstPage 元素可见,它就不会被执行(这意味着$('.firstPage').visible(true) 不会返回true)。为什么?我错过了什么?
代码:
$(window).bind('scroll', function(){
var lastScrollTop = 0;
var originalHeaderPosition = $(".header-menu-container-nav").offset().top;
var scrollTop = $(this).scrollTop();
var vph = $(window).height();
var currentHeaderPosition = $(document).scrollTop();
var deltaHeaderPosition = currentHeaderPosition - originalHeaderPosition;
if (scrollTop > lastScrollTop){ // downscroll code
if (deltaHeaderPosition >= vph) {
$('.header-menu-container-nav').addClass('sticky');
$('.header-menu-container-nav').fadeIn();
}
} else {// upscroll code
if ($('.firstPage').visible( true )) {
$('.header-menu-container-nav').fadeOut(function() {
$('.header-menu-container-nav').attr('style','');
$('.header-menu-container-nav').removeClass('sticky');
});
}
}
lastScrollTop = scrollTop;
});
【问题讨论】:
标签: jquery jquery-plugins visible