我正在研究使用一些轻量级代码,我发现它通过在项目可见时将 data-src 切换到 src 来执行 LazyLoading。基本上减少了全脂的 LazyLoad。来自这里的代码:http: //luis-almeida.github.com/unveil/
(function( $ ) {
$.fn.unveil = function( threshold ) {
var $w = $( window ),
th = threshold || 0,
images = this,
loaded,
inview,
source;
this.one( "unveil", function(){
source = this.getAttribute( "data-src" );
this.setAttribute( "src", source );
this.removeAttribute( "data-src" );
} );
function unveil() {
inview = images.filter(function(){
var $e = $( this ),
wt = $w.scrollTop(),
wb = wt + $w.height(),
et = $e.offset().top,
eb = et + $e.height();
return eb >= wt - th && et <= wb + th;
});
loaded = inview.trigger( "unveil" );
images = images.not( loaded );
}
$w.scroll( unveil );
$w.resize( unveil );
unveil();
return this;
};
})( jQuery );
但是,我的 jQuery 知识非常有限,所以据我所知,可见性检查是基于 scrollTop 的垂直位置。
我正在尝试在我的电子商务商店的一部分上使用它,其中水平 jQuery Tool 可滚动 div 中有许多产品。由于它们位于屏幕的垂直部分,因此它会加载所有图像。我尝试使用 LazyLoad 但无法使其工作。
有谁知道如何编辑此代码,以便该函数可以检测到溢出中右侧的 div 中的图像(这是隐藏的),因此不应加载 - 即。图像的位置在某个点的右侧吗?