热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图片延时加载插件(lazyload)

图片延时加载(lazyload)是网站常用的一种手段,目的是为了减少页面加载时向服务器的请求数,这里分享一款支持大部分情况下(如IPAD浏

图片延时加载(lazyload)是网站常用的一种手段,目的是为了减少页面加载时向服务器的请求数,这里分享一款支持大部分情况下(如IPAD浏览、异步加载、某个范围加载)的图片延时加载插件。

 

代码及效果

先贴代码:

$.extend({imgLoad: function (options) {options = $.extend({container: "img",//集合time: 600,//滚动时定时刷新时间attribute: "src2" //保存原图地址的自定义属性
}, options);var container = options.container, n = n || 0, tim, _time = 0;Load();function GetHeight() {var d = document,y = (navigator.userAgent.toLowerCase().match(/iPad/i) == "ipad") ? window.pageYOffset : Math.max(d.documentElement.scrollTop, d.body.scrollTop);return d.documentElement.clientHeight + y - n;}function Load() {var hg = GetHeight();$(container).each(function () {var _s2 = $(this).attr(options.attribute), t = $(this).offset().top;if (_s2 && t hg - 1000) {$(this).attr("src", _s2).removeAttr(options.attribute)};})};if (!!window.ActiveXObject && !window.XMLHttpRequest){ _time = options.time }$(window).scroll(function () {clearTimeout(tim);tim = setTimeout(function () { Load(); }, options.time);});}})


点击这里查看效果

 

参数说明

参数container:container表示要遍历的容器,默认是IMG,也就是遍历整个页面的所有IMG。如果想只延时加载某个范围内的图片,可以修改此参数,如我想异步加载面代码中ul中的图片,那么只需要设置参数container的值为".imgContainer li img"即可。

<Script type&#61;"Javascript/text">$(function(){$.imgLoad({ container: ".imgContainer li img"});})
Script>
<ul class&#61;"imgContainer"><li><img src2&#61;"X1.JPG" />li><li><img src2&#61;"X2.JPG" />li><li><img src2&#61;"X3.JPG" />li>ul>


参数time&#xff1a;参数time表示延时加载的时间&#xff0c;默认是600毫秒&#xff0c;就是说当页面滚动到该范围时0.6秒后该图片就会显示&#xff0c;设置time为1秒&#xff1a;

<Script type&#61;"Javascript/text">
$(
function(){$.imgLoad({"time":1000 });
})
Script>

参数attribute&#xff1a;此参数为存储图片路径的参数&#xff0c;在图片设置SRC属性之前&#xff0c;要把真实的图片路径存在某个属性里&#xff0c;默认为SRC2&#xff0c;可以把此属性设置为任意&#xff1a;

<Script type&#61;"Javascript/text">$(function(){$.imgLoad({ attribute: "myAttr"});})
Script>
<body><img myAttr&#61;"1.jpg"/>
body>


基本参数已经讲完了&#xff0c;关于调用也是相当简单的。这里还有一个问题&#xff0c;由于延时加载的方法是写在页面滚动的事件里&#xff0c;也就是代码中的

$(window).scroll(function () {clearTimeout(tim);tim &#61; setTimeout(function () { Load(); }, options.time);});


那么如果直接刷新页面浏览器会直接跳到当前停留的位置&#xff0c;但是有的浏览器没有触发scroll事件&#xff0c;这种情况下的解决办法在页面加载完成后使用scrollTop方法&#xff0c;让浏览器向上1个像素&#xff1a;

jQuery(window).scrollTop(1)


这样这个插件就讲完了&#xff0c;相对于网上的一些插件应该算是简单实用的了&#xff0c;欢迎大家踊跃讨论。

转:https://www.cnblogs.com/w-pound/archive/2013/04/24/3040254.html



推荐阅读
  • 图像因存在错误而无法显示 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • WPF开发心率检测大数据曲线图的高性能实现方法
    本文介绍了在WPF开发中实现心率检测大数据曲线图的高性能方法。作者尝试过使用Canvas和第三方开源库,但性能和功能都不理想。最终作者选择使用DrawingVisual对象,并结合局部显示的方式实现了自己想要的效果。文章详细介绍了实现思路和具体代码,对于不熟悉DrawingVisual的读者可以去微软官网了解更多细节。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 前段时间做一个项目,需求是对每个视频添加预览图,这个问题最终选择方案是:用canvas.toDataYRL();来做转换获取视频的一个截图,添加到页面中,达到自动添加预览图的目的。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
author-avatar
手机用户2502931803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有