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 相关文章推荐
JavaScript 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
js用Date对象的setDate()函数对日期进行加减操作
Sep 18 Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 Javascript
node.js中的fs.fsync方法使用说明
Dec 15 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
小程序云开发之用户注册登录
May 18 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 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模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
微信小程序实现页面左右滑动
2020/11/16 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
django实现模型字段动态choice的操作
2020/04/01 Python
python中列表的含义及用法
2020/05/26 Python
python如何保存文本文件
2020/06/07 Python
python中的对数log函数表示及用法
2020/12/09 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
大学生求职推荐信
2013/11/27 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
爱护公物标语
2014/06/24 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
写给导师的自荐信
2015/03/06 职场文书