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之ajax技术的详细介绍
Jun 19 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
jquery实现多条件筛选特效代码分享
Aug 28 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
May 17 Javascript
js倒计时简单实现代码
Aug 11 Javascript
微信小程序左滑删除效果的实现代码
Feb 20 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 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 代码规范小结
2012/03/08 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python读取注册表中值的方法
2013/04/08 Python
python多线程http下载实现示例
2013/12/30 Python
python编写网页爬虫脚本并实现APScheduler调度
2014/07/28 Python
你应该知道的python列表去重方法
2017/01/17 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
财务部副经理岗位职责
2014/03/14 职场文书
年会主持词结束语
2014/03/27 职场文书
企业金融服务方案
2014/06/03 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
新员工辞职信范文
2015/05/12 职场文书
严以律己学习心得体会
2016/01/13 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL