本文转自:http://blog.csdn.net/ning109314/article/details/7042829

目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片);二是自动预加载(加载完首屏后n秒后自动加载其他位置的图片)。现在最流行使用的就是LazyLoad.js及scrollLoading.js这两个用Jquery写的小插件。

一、LazyLoad实现:

<script type="text/javascript" src="/js/lazyload/jquery.min.js"></script> < script type="text/javascript" src="/js/lazyload/lazyload.js"></script> < script type="text/javascript"> jQuery(document).ready( function($){ $("img").lazyload({ effect : "fadeIn" }); }); < /script>

网上找到一个更好点的处理方式,以下方式转自http://www.poluoluo.com/jzxy/201110/145261.html

<script type="text/javascript">

//首先用JQ判断浏览器类型及版本,如果是IE8以下的浏览器就用effect=show,否则就用effect=fadeIn,判断浏览器版本函数如下 function checkbrowse() { var ua = navigator.userAgent.toLowerCase(); var is = (ua.match(/\b(chrome|opera|safari|msie|firefox)\b/) || ['', 'mozilla'])[1]; var r = '(?:' + is + '|version)[\\/: ]([\\d.]+)'; var v = (ua.match(new RegExp(r)) || [])[1]; jQuery.browser.is = is; jQuery.browser.ver = v; return { 'is': jQuery.browser.is, 'ver': jQuery.browser.ver } }

//改造Jquery.LazyLoad.js函数,根据浏览器版本来显示不同的滤镜效果 var public = checkbrowse(); var showeffect = ""; if ((public['is'] == 'msie' && public['ver'] < 8.0)) { showeffect = "show" } else { showeffect = "fadeIn" } jQuery(document).ready(function($) { $("img").lazyload({ placeholder: "http://demo.jb51.net/js/2011/lazyload/Js/lazyload/grey.gif", effect: showeffect, failurelimit: 10 }) }); < /script>

html:

<img    src="/js/lazyload/pixel.gif" original="真实图片路径" />

而LazyLoad只是给你一个延迟加载的假象,每次图片都会加载两次,完全就是一个假象的延迟加载。可以修改LazyLoad文件实现真实延迟加载,本人比较懒,就直接在网上找了一个修改好的,嘿嘿

  1. /*
  2. * Lazy Load - jQuery plugin for lazy loading images
  3. *
  4. * Copyright (c) 2007-2009 Mika Tuupola
  5. *
  6. * Licensed under the MIT license:
  7. *   http://www.opensource.org/licenses/mit-license.php
  8. *
  9. * Project home:
  10. *   http://www.appelsiini.net/projects/lazyload
  11. *
  12. * Version:  1.5.0
  13. *
  14. */
  15. (function ($) {
  16. $.fn.lazyload = function (options) {
  17. var settings = {
  18. threshold: 0,
  19. failurelimit: 0,
  20. event: "scroll",
  21. effect: "show",
  22. container: window
  23. };
  24. if (options) {
  25. $.extend(settings, options);
  26. }
  27. /* Fire one scroll event per scroll. Not one scroll event per image. */
  28. var elements = this;
  29. if ("scroll" == settings.event) {
  30. $(settings.container).bind("scroll", function (event) {
  31. var counter = 0;
  32. elements.each(function () {
  33. if ($.abovethetop(this, settings) ||
  34. $.leftofbegin(this, settings)) {
  35. /* Nothing. */
  36. } else if (!$.belowthefold(this, settings) &&
  37. !$.rightoffold(this, settings)) {
  38. $(this).trigger("appear");
  39. } else {
  40. if (counter++ > settings.failurelimit) {
  41. return false;
  42. }
  43. }
  44. });
  45. /* Remove image from array so it is not looped next time. */
  46. var temp = $.grep(elements, function (element) {
  47. return !element.loaded;
  48. });
  49. elements = $(temp);
  50. });
  51. }
  52. this.each(function () {
  53. var self = this;
  54. //删除的代码
/*
* Lazy Load - jQuery plugin for lazy loading images
*
* Copyright (c) 2007-2009 Mika Tuupola
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* http://www.appelsiini.net/projects/lazyload
*
* Version: 1.5.0
*
*/
(function ($) {
$.fn.lazyload = function (options) {
var settings = {
threshold: 0,
failurelimit: 0,
event: "scroll",
effect: "show",
container: window
};
if (options) {
$.extend(settings, options);
}
/* Fire one scroll event per scroll. Not one scroll event per image. */
var elements = this;
if ("scroll" == settings.event) {
$(settings.container).bind("scroll", function (event) {
var counter = 0;
elements.each(function () {
if ($.abovethetop(this, settings) ||
$.leftofbegin(this, settings)) {
/* Nothing. */
} else if (!$.belowthefold(this, settings) &&
!$.rightoffold(this, settings)) {
$(this).trigger("appear");
} else {
if (counter++ > settings.failurelimit) {
return false;
}
}
});
/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function (element) {
return !element.loaded;
});
elements = $(temp);
});
}
this.each(function () {
var self = this;
//删除的代码
  1. /* When appear is triggered load original image. */
  2. $(self).one("appear", function () {
  3. if (!this.loaded) {
  4. $("<img />")
  5. .bind("load", function () {
  6. $(self)
  7. .hide()
  8. .attr("src", $(self).attr("original"))
  9. [settings.effect](settings.effectspeed);
  10. self.loaded = true;
  11. })
  12. .attr("src", $(self).attr("original"));
  13. };
  14. });
  15. /* When wanted event is triggered load original image */
  16. /* by triggering appear.                              */
  17. if ("scroll" != settings.event) {
  18. $(self).bind(settings.event, function (event) {
  19. if (!self.loaded) {
  20. $(self).trigger("appear");
  21. }
  22. });
  23. }
  24. });
  25. /* Force initial check if images should appear. */
  26. $(settings.container).trigger(settings.event);
  27. return this;
  28. };
  29. /* Convenience methods in jQuery namespace.           */
  30. /* Use as  $.belowthefold(element, {threshold : 100, container : window}) */
  31. $.belowthefold = function (element, settings) {
  32. if (settings.container === undefined || settings.container === window) {
  33. var fold = $(window).height() + $(window).scrollTop();
  34. } else {
  35. var fold = $(settings.container).offset().top + $(settings.container).height();
  36. }
  37. return fold <= $(element).offset().top - settings.threshold;
  38. };
  39. $.rightoffold = function (element, settings) {
  40. if (settings.container === undefined || settings.container === window) {
  41. var fold = $(window).width() + $(window).scrollLeft();
  42. } else {
  43. var fold = $(settings.container).offset().left + $(settings.container).width();
  44. }
  45. return fold <= $(element).offset().left - settings.threshold;
  46. };
  47. $.abovethetop = function (element, settings) {
  48. if (settings.container === undefined || settings.container === window) {
  49. var fold = $(window).scrollTop();
  50. } else {
  51. var fold = $(settings.container).offset().top;
  52. }
  53. return fold >= $(element).offset().top + settings.threshold + $(element).height();
  54. };
  55. $.leftofbegin = function (element, settings) {
  56. if (settings.container === undefined || settings.container === window) {
  57. var fold = $(window).scrollLeft();
  58. } else {
  59. var fold = $(settings.container).offset().left;
  60. }
  61. return fold >= $(element).offset().left + settings.threshold + $(element).width();
  62. };
  63. /* Custom selectors for your convenience.   */
  64. /* Use as $("img:below-the-fold").something() */
  65. $.extend($.expr[':'], {
  66. "below-the-fold": "$.belowthefold(a, {threshold : 0, container: window})",
  67. "above-the-fold": "!$.belowthefold(a, {threshold : 0, container: window})",
  68. "right-of-fold": "$.rightoffold(a, {threshold : 0, container: window})",
  69. "left-of-fold": "!$.rightoffold(a, {threshold : 0, container: window})"
  70. });
  71. })(jQuery);
            /* When appear is triggered load original image. */
$(self).one("appear", function () {
if (!this.loaded) {
$("<img />")
.bind("load", function () {
$(self)
.hide()
.attr("src", $(self).attr("original"))
[settings.effect](settings.effectspeed);
self.loaded = true;
})
.attr("src", $(self).attr("original"));
};
});
/* When wanted event is triggered load original image */
/* by triggering appear. */
if ("scroll" != settings.event) {
$(self).bind(settings.event, function (event) {
if (!self.loaded) {
$(self).trigger("appear");
}
});
}
});
/* Force initial check if images should appear. */
$(settings.container).trigger(settings.event);
return this;
};
/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
$.belowthefold = function (element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).height() + $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top + $(settings.container).height();
}
return fold <= $(element).offset().top - settings.threshold;
};
$.rightoffold = function (element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).width() + $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left + $(settings.container).width();
}
return fold <= $(element).offset().left - settings.threshold;
};
$.abovethetop = function (element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top;
}
return fold >= $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function (element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left;
}
return fold >= $(element).offset().left + settings.threshold + $(element).width();
};
/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() */
$.extend($.expr[':'], {
"below-the-fold": "$.belowthefold(a, {threshold : 0, container: window})",
"above-the-fold": "!$.belowthefold(a, {threshold : 0, container: window})",
"right-of-fold": "$.rightoffold(a, {threshold : 0, container: window})",
"left-of-fold": "!$.rightoffold(a, {threshold : 0, container: window})"
});
})(jQuery);

二、scrollLoading实现

<script src="/js/lazyload/jquery.scrollLoading.js" type="text/javascript"></script><script type="text/javascript" src="/js/lazyload//jquery_002.js"></script> < script type="text/javascript" src="/js/lazyload//jquery.js"></script> < script> $(function() {  $(".scrollLoading").scrollLoading();  }); < /script>

HTML:

<img class="scrollLoading" style="background: url(&quot;/js/lazyload/pixel.gif&quot;) no-repeat scroll center center transparent;" src="/js/lazyload/pixel.gif" style="WIDTH: 526px; HEIGHT: 293px" data-url="真实路径"/>

scrollLoading的实现相对而言比较麻烦一下

如果需要对应的JS包请去下载:

http://download.csdn.net/detail/ning109314/3882760

[转]LazyLoad.js及scrollLoading.js的更多相关文章

  1. LazyLoad.js及scrollLoading.js

    http://blog.csdn.net/ning109314/article/details/7042829 目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片):二是自动预加载(加 ...

  2. 插件:★★★ !!!图片懒加载 lazyload.js 、 jquery.scrollLoading.js

    插件:图片懒加载 jquery.lazyload.js 2016-3-31 插件说明:http://www.w3cways.com/1765.html (小插件,好用) 下载地址: https://r ...

  3. 两种图片延迟加载的方法总结jquery.scrollLoading.js与jquery.lazyload.js

    估计网上能查到的最多的两种图片延迟加载方法就是jquery.scrollLoading.js与jquery.lazyload.js了,其中jquery.lazyload.js的调用方法因为有网友爆出的 ...

  4. 两种图片延迟加载的方法总结jquery.scrollLoading.js与jquery.lazyload.js---转载

    jquery.scrollLoading方法 html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml& ...

  5. 图片延迟加载scrollLoading.js应用

     <ul>                     <li><a href="http://news.qq.com/" target="_b ...

  6. 页面滚动图片等元素动态加载插件jquery.scrollLoading.js

    如果一个网页很长,那么该页面的加载时间也会相应的较长.而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的 ...

  7. jq:jQuery库文件jquery.scrollLoading.js使用方法

    图片延迟加载,滚动到哪里加载到哪里: 1:头部加载库文件 <script type="text/javascript" src="/js/jquery.scroll ...

  8. 记录:sea.js和require.js配置 与 性能对比

    最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...

  9. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

随机推荐

  1. Advanced WordCount

    Github:https://github.com/Hoyifei/SQ-T-Homework-WordCount-Advanced (注:Github上的所有代码由我代为提交) PSP:(注:部分实 ...

  2. malloc/free 与 new/delete同与不同

    一.相同点 1.都是从堆上申请内存,由程序员来掌控这段内存的申请与释放. 2.对于内置类型,两者使用没有太大区别. 二.不同点 1.malloc/free是C++/C语言的标准库函数,需要库支持:ne ...

  3. es6学习总结一

    一.let与var 的区别 (1).作用域: let什么的变量在块级作用域内有效,而var声明则在全局作用内有效 (2).变量提升: let声明的变量不存在变量提升,即一定要在声明之后才能调用,否则就 ...

  4. 关于AJAX异步加载节点无法触发点击事件问题的解决方式

    做练习的过程中遇到一个问题,使用AJAX异步新增一个节点,无法触发点击事件,经过查阅之后知道一个方式,使用JS的委托事件,在此做一个记录. $(document).on('click', '.recr ...

  5. linux通配符与基础正则

    1.特殊符号: ' '     单引号          单引号的内容     写什么就是什么,不会被当成特殊字符.       单引号实例:      [root@oldboyedu-sh01 ~] ...

  6. java的一些最最最最基本的东西,纯粹是为了保存

    1.方法签名 指的是方法名和参数类型 2.java类初始化数据的方法 构造函数 声明变量时赋值 静态块 3.List转数组 List<String> list = new ArrayLis ...

  7. 深入解读Job System(1)

    https://mp.weixin.qq.com/s/IY_zmySNrit5H8i0CcTR7Q 通常而言,最好不要把Unity实体组件系统ECS和Job System看作互相独立的部分,要把它们看 ...

  8. nginx 简单教程

    使用 nginx 的使用比较简单,就是几条命令. 常用到的命令如下: nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务. nginx -s quit 平稳关闭N ...

  9. [51nod1237] 最大公约数之和 V3(杜教筛)

    题面 传送门 题解 我好像做过这题-- \[ \begin{align} ans &=\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\\ &=\sum_{d=1}^ ...

  10. Cannot find module 'webpack/bin/config-yargs'

    1.版本不兼容 npm install webpack-dev-server@1.15.0 -g