我在很多“现代”网站(如facebook和google图片搜索)中注意到了这一点,在这些网站中,只有当用户向下滚动足够多的页面以使其进入可见的视窗区域时,才会加载折叠下的图片(在查看源代码时,页面会显示 X number of <img> 标签,但它们不是直接从服务器获取的)。这项技术叫什么,它是如何工作的,它在多少个浏览器中工作。有没有一个jQuery插件可以用最少的代码实现这种行为。
编辑
另外:有没有人能解释一下HTML元素有没有"onScrolledIntoView“或者类似的事件。如果没有,这些插件是如何工作的?
发布于 2011-02-25 21:18:16
发布于 2017-03-03 19:05:09
我想出了我自己的基本方法,它似乎工作得很好(到目前为止)。在一些流行的脚本中,可能有十几件事是我没有想到的。
Note -此解决方案快速且易于实现,但对性能当然不是很好。如果性能有问题,一定要看看Apoorv提到并由developers.google解释的新Intersection Observer。
The JQuery
$(window).scroll(function() {
$.each($('img'), function() {
if ( $(this).attr('data-src') && $(this).offset().top < ($(window).scrollTop() + $(window).height() + 100) ) {
var source = $(this).data('src');
$(this).attr('src', source);
$(this).removeAttr('data-src');
}
})
})示例html代码
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>解释了
滚动页面时,会检查页面上的每个图像。
$(this).attr('data-src') -如果图像具有属性data-src
以及这些图像离窗口底部有多远..
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
将+ 100调整为您喜欢的任何值(例如- 100 )
var source = $(this).data('src'); -获取data-src=的值,也就是图像url
$(this).attr('src', source); -将该值放入src=
$(this).removeAttr('data-src'); -删除data-src属性(这样你的浏览器就不会浪费资源去处理已经加载的图片)
向现有代码添加
要转换您的html,只需在编辑器中搜索并用src="" data-src="替换src="
发布于 2011-02-25 21:11:14
有一个非常好的无限滚动插件here
我自己从来没有编写过,但我可以想象它是如何工作的。
调用函数的$(window).scroll(myInfinteScrollFunction);
function myInfiniteScrollFunction() { if($(window).scrollTop() == $(window).height()) makeAjaxRequest();}
$.ajax({ type:"POST",url:"myAjaxFile.php",data:{"resultNum":30,"numPerPage":50,"query":"interesting%20icons“},success: myInfiniteLoadFunction(msg) });
希望这是有意义的。
https://stackoverflow.com/questions/5117421
复制相似问题