jQuery实现图片延迟加载

在浏览有些网站时,发现图片是在下拉滚动条时才加载,这是一个很不错的用户体验。这一效果是经过JavaScript 编写的 jQuery 插件实现的,它能够延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的.在包含不少大图片长页面中延迟加载图片能够加快页面加载速度. 浏览器将会在加载可见图片以后即进入就绪状态. 在某些状况下还能够帮助下降服务器负担. 有些WordPress主题也具有了此功能。javascript

这里把这一功能应用到WordPress主题方法说一下,其实很简单,首先下载jquery.lazyloa.js,放到主题目录中,而后在header.php模板文件</head>标签前添加以下代码:php

  1. <script type="text/javascript" src="<?php bloginfo('template_directory');?>/js/jquery.lazyload.js"></script>java

  2. <script type="text/javascript">jquery

  3. $(function() {浏览器

  4. $("img").lazyload({服务器

  5. effect : "fadeIn"app

  6. });ide

  7. });布局

  8. </script>post

其中img是延迟加载全部图片,也能够根据不一样模板做相应改动,好比我这个主题,能够改为#post img,这样只延迟加载#post 容器内的图片,不然可能影响到侧边图片的加载,主要是留言者头像可能会最后加载;

fadeIn是图片显示效果

这样基本就能够了!

若是上面的功能可能没有达到你的要求,还有几个选项可供设置。

能够设置阀值来控制 灵敏度

  1. $(“img”).lazyload({ threshold : 200 });  

把阀值设置成200 意思就是当图片没有看到以前先load 200像素。固然了你也能够经过设置占位符图片和自定事件来触发加载图片事件

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. event : "click"  

  4. });  

还能够经过定义effect 参数来定义一些图片显示效果

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. effect : "fadeIn"  

  4. });  

事件触发加载,事件能够是任何 jQuery 时间, 如: click 和 mouseover. 你还可使用自定义的事件, 如: sporty 和 foobar. 默认状况下处于等待状态, 直到用户滚动到窗口上图片所在位置. 在灰色占位图片被点击以前阻止加载图片, 你能够这样作:

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. event : "click"  

  4. });  

延迟加载图片,Lazy Load 插件的一个不完整的功能, 可是这也能用来实现图片的延迟加载. 下面的代码实现了页面加载完成后再加载. 页面加载完成 5 秒后, 指定区域内的图片会自动进行加载.

  1. $(function() {   

  2. $("img:below-the-fold").lazyload({   

  3. placeholder : "img/grey.gif",   

  4. event : "sporty"  

  5. });   

  6. });   

  7. $(window).bind("load"function() {   

  8. var timeout = setTimeout(function() {$("img").trigger("sporty")}, 5000);   

  9. });  

图片在容器里面你能够将插件用在可滚动容器的图片上, 例如带滚动条的 DIV 元素. 你要作的只是将容器定义为 jQuery 对象并做为参数传到初始化方法里面.

CSS

  1. #container {   

  2. height600px;   

  3. overflowscroll;   

  4. }  

JavaScript 代码:

  1. $("img").lazyload({   

  2. placeholder : "img/grey.gif",   

  3. container: $("#container")   

  4. });  

当图片不顺序排列,滚动页面的时候, Lazy Load 会循环为加载的图片. 在循环中检测图片是否在可视区域内. 默认状况下在找到第一张不在可见区域的图片时中止循环. 图片被认为是流式分布的, 图片在页面中的次序和 HTML 代码中次序相同. 可是在一些布局中, 这样的假设是不成立的. 不过你能够经过 failurelimit 选项来控制加载行为.

  1. $("img").lazyload({   

  2. failurelimit : 10   

  3. });  

下载地址: sourceminified or packed

 

 

Jquery.LazyLoad.js插件参数详解: 下面对LazyLoad插件的一些参数进行说明,供使用者作出更贴切的效果。1,用图片提早占位placeholder : "img/grey.gif",参数:placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏2,载入使用何种效果effect : "fadeIn",参数:effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,经常使用fadeIn3,提早开始加载threshold : 200,参数:threshold,值为数字,表明页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,能够作到不让用户察觉.4,事件触发时才加载event : "click",参数:event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).能够实现鼠标莫过或点击图片才开始加载,后两个值未测试…5,对某容器中的图片实现效果container: $("#container"),参数:container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可让你在拉动某DIV的滚动条时依次加载其中的图片6,图片排序混乱时failurelimit : 10,参数:failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则再也不继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的状况,failurelimit意在加载N张可见区域外的图片,以免出现这个问题.

相关文章
相关标签/搜索