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 相关文章推荐
jQuery 常见开发使用技巧总结
Dec 26 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
vue.js中toast用法及使用toast弹框的实例代码
Aug 27 Javascript
详解JavaScript作用域和作用域链
Mar 19 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
May 30 jQuery
vue学习笔记之作用域插槽实例分析
Feb 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
PHP PDO函数库详解
2010/04/27 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
浅析vue数据绑定
2017/01/17 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
vue.js中created方法作用
2018/03/30 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
Node 代理访问的实现
2019/09/19 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
django中的HTML控件及参数传递方法
2018/03/20 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
django ORM之values和annotate使用详解
2020/05/19 Python
python获取linux系统信息的三种方法
2020/10/14 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
学校元旦晚会方案
2014/02/19 职场文书
老人节标语大全
2014/10/08 职场文书
个人求职意向书
2015/05/11 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
2016小学新学期寄语
2015/12/04 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js