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 相关文章推荐
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
jquery 笔记 事件
Nov 02 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
JS运动特效之同时运动实现方法分析
Jan 24 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
多个Vue项目部署到服务器的步骤记录
Oct 22 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 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
第四节--构造函数和析构函数
2006/11/16 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP如何实现跨域
2016/05/30 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
python 检查是否为中文字符串的方法
2018/12/28 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
2015年国庆节新闻稿
2015/07/18 职场文书
自荐信大全
2019/03/21 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Django路由层如何获取正确的url
2021/07/15 Python