picLazyLoad 实现图片延时加载(包含背景图片)


Posted in Javascript onJuly 21, 2016

如下所示: 

/**
 * picLazyLoad 图片延时加载,包含背景图片
 * $(img).picLazyLoad({...})
 * data-original 预加载图片地址
 * alon
 */
;(function($){
  $.fn.imgLazyLoad = function(settings){
    var $this = $(this),
      _winScrollTop = 0,
      _winHeight = $(window).height();
    settings = $.extend({
      threshold: 0, // 提前高度加载
      placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC',
      callback:function(){}
    }, settings||{});
    // 执行懒加载图片
    lazyLoadPic();
    // 滚动触发换图
    $(window).on('scroll',function(){
      _winScrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
      lazyLoadPic();
    });
    // 懒加载图片
    function lazyLoadPic(){
      $this.each(function(){
        var $self = $(this);
        if($self.is('img')){
          if($self.attr('data-original')){
            var _offsetTop = $self.offset().top;
            if((_offsetTop - settings.threshold) <= (_winHeight + _winScrollTop)){
              $self.attr('src',$self.attr('data-original'));
              $self.removeAttr('data-original');
              $self.removeClass('loadH');
              settings.callback($self);
            }
          }
        }else{
          if($self.attr('data-original')){// 默认占位图片
            if($self.css('background-image') == 'none'){
              $self.css('background-image','url('+settings.placeholder+')');
            }
            var _offsetTop = $self.offset().top;
            if((_offsetTop - settings.threshold) <= (_winHeight + _winScrollTop)){
              $self.css('background-image','url('+$self.attr('data-original')+')');
              $self.removeAttr('data-original');
              settings.callback($self);
            }
          }
        }
      });
    }
  }
})(Zepto);

调用

$('img').imgLazyLoad({callback:function(data){
 
 })

以上这篇picLazyLoad 实现图片延时加载(包含背景图片)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
HTML上传控件取消选择
Mar 06 Javascript
JS链式调用的实现方法
Mar 07 Javascript
对比分析json及XML
Nov 28 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
Ionic2调用本地SQlite实例
Apr 22 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
Mar 05 Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
Jul 19 Javascript
layui实现左侧菜单点击右侧内容区显示
Jul 26 Javascript
Vue 自定义指令功能完整实例
Sep 17 Javascript
js单线程的本质 Event Loop解析
Oct 29 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 #Javascript
jQuery新窗口打开外链接
Jul 21 #Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 #Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
Jul 20 #Javascript
Node.js如何自动审核团队的代码
Jul 20 #Javascript
js只执行1次的函数示例
Jul 20 #Javascript
JQuery为元素添加样式的实现方法
Jul 20 #Javascript
You might like
smarty的保留变量问题
2008/10/23 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
range 标准化之获取
2011/08/28 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python中使用SAX解析xml实例
2014/11/21 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
python实现周期方波信号频谱图
2018/07/21 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python区分不同数据类型的方法
2019/10/14 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
计算机专业应届生求职信
2014/04/06 职场文书
办护照工作证明
2014/10/01 职场文书
导游词之西安骊山
2019/12/20 职场文书