使用jquery插件实现图片延迟加载技术(懒加载)

有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对于比较长的页面来说,这个方案是比较好的。

这里推荐使用jquery图片延迟加载插件jquery.lazyload实现图片延迟加载提高网站打开速度

下载地址:http://www.appelsiini.net/download/jquery.lazyload.js

修正版:jquery.lazyload修正版.rar (修正版说明)
一、快速使用篇
1.导入JS插件

<script src="js\jquery.js" type="text/javascript"></script>
<script src="js\jquery.lazyload.js" type="text/javascript"></script>

2.在你的页面中加入如下的javascript:

<script type="text/javascript">
    $("img").lazyload();
</script>

这将会使所有的图片都延迟加载;

二、高级篇详细介绍(不想了解那么多的可以直接绕过)

Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的.

在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担.

Lazy Load 灵感来自 Matt Mlinac 制作的 YUI ImageLoader 工具箱.

怎样使用?

Lazy Load 依赖于 jQuery. 请将下列代码加入页面 head 区域:

<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>

并且在你的执行代码中加入下面语句:

$("#xd").lazyload();<BR>

这将使id=”xd” 区域下的图片将被延迟加载.

设置敏感度

插件提供了 threshold 选项, 可以通过设置临界值 (触发加载处到图片的距离) 来控制图片的加载. 默认值为 0 (到达图片边界的时候加载).

$("#xd").lazyload({ threshold : 200 });

将临界值定为 200, 当可视区域离图片还有 200 个象素的时候开始加载图片. (这一句原文的字面意思和本人理解不一致, 原文: Setting threshold to 200 causes image to load 200 pixels before it is visible.)

参数:threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉.

占位图片

你还可以设定一个占位图片并定义事件来触发加载动作. 这时需要为占位图片设定一个 URL 地址. 透明, 灰色和白色的 1×1 象素的图片已经包含在插件里面.

$("img").lazyload({ placeholder : "img/grey.gif" });

参数:placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏。

事件触发加载

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

$("img").lazyload({
    placeholder: "img/grey.gif",
    event: "click"
}); 

参数:event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…

使用特效

当图片完全加载的时候, 插件默认地使用 show() 方法来将图显示出来. 其实你可以使用任何你想用的特效来处理. 下面的代码使用 FadeIn 效果. 这是演示页面.

$("img").lazyload({
    placeholder: "img/grey.gif",
    effect : "fadeIn"
}); 

参数:effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn。

图片在容器里面

你可以将插件用在可滚动容器的图片上, 例如带滚动条的 DIV 元素. 你要做的只是将容器定义为 jQuery 对象并作为参数传到初始化方法里面. 这是水平滚动演示页面和垂直滚动的演示页面.

CSS 代码:

#container { height: 600px;overflow: scroll; }

JavaScript 代码:

$("img").lazyload({
    placeholder: "img/grey.gif",
    container: $("#container")
}); 

参数:container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片

当图片不顺序排列

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

$("img").lazyload({
    failurelimit: 10
}); 

将 failurelimit 设为 10 令插件找到 10 个不在可见区域的图片是才停止搜索. 如果你有一个猥琐的布局, 请把这个参数设高一点.

参数:failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题.

多参数同时设置方法

<script type="text/javascript">
        $("img").lazyload({ placeholder: "images/white.gif", threshold: 200, effect: "fadeIn" });
</script>

延迟加载图片

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

$(function() {
    $("img:below-the-fold").lazyload({
        placeholder: "img/grey.gif",
        event: "sporty"
    });
});
$(window).bind("load", function() {
    var timeout = setTimeout(function() { $("img").trigger("sporty") }, 5000);
}); 
时间: 2024-08-03 17:03:10

使用jquery插件实现图片延迟加载技术(懒加载)的相关文章

hibernate延迟加载(懒加载)详解

Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载.Hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hibernate 的运行性能. 下面先来剖析 Hibernate 延迟加载的"秘密". 集合属性的延迟加载 当 Hibernate 从数据库中初始化某个持久化实体时,该实体的集合属性是否随持久化类一起初始化呢?如果集合属性里包含十万,甚至百万的记录,在初始化持久化实体的同时, 完成所有集合属性的抓取,

jQuery页面滚动图片等元素动态加载实现

一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商城页面. 或者是前段时间写血本买了个高档耳机的京东商城页面,或者是新浪微博之类. 这些页面图片数量多,而且比较大,少说百来K,多则上兆.要是页面载入就一次性加载完毕.乖乖,估计黄花都变成黄花菜了.所以,我们得做点什么,避 免这种糟糕的状况发生.目前很流行的做法就是滚动动态加载,显示屏幕之外的图片默认是不加载的,随着页面的滚动,这个要显示图片的区域进入了浏览器可是窗 口范围,则触发图片的加载显示.

EF中的贪婪加载和延迟加载(懒加载)

在上一章中,我们使用了Linq对Entity Framework进行了一个查询,但是通过学习我们却发现了懒加载给我来的性能上的开销是很到的,尤其是在循环中,如果数据量不是很多的情况下还可以接受,如果数据量一旦大气来,那么这个效率则是影响非常大的.那该怎么办呢?其实在Entity Framwork中,除了提供了懒加载技术还提供了一个“贪婪加载”.那么什么是贪婪加载呢?从名字上看,就是非常的粗鲁的,一次性的吧相关的数据全部查询出来,虽然在性能上说还是有点影响的,但是比起在循环中使用懒加载要强了不少了

前端技术--懒加载

有利于优化前端页面因瀑布页面图片多而导致的页面加载时间长,加载慢的问题. 原理 设置个data-src(自定义一个属性)来存放真实地址 当滚动页面时,检查所有的img标签,看是否出现在视野中,如果已经出现在了视野中,那继续再进行判断,看其是否已经被加载过了,如果还没有被加载过,那就进行加 这里需要注意两个问题 首先页面一开始不进行滚动 就不会加载任何图片  滚轮开始动的时候就加载会重复  所以会浪费资源  不如等到滚轮停止再加载 代码如下 <!doctype html><html lan

jquery插件实现图片延迟加载(lazyload.js)

http://www.cnblogs.com/tinyphp/archive/2013/04/09/3009385.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/x

swiper.js 多图片页面的懒加载lazyLoading

swiper.js官网:http://www.swiper.com.cn/api/Images/2015/0308/213.html 设为true开启图片延迟加载,使preloadImages无效.需要将图片img标签的src改写成data-src,并且增加类名swiper-lazy.背景图的延迟加载则增加属性data-background(3.0.7开始启用). lazyLoadingInPrevNextAmount 设置在延迟加载图片时提前多少个slide.个数不可少于slidesPerVi

Hibernate的延迟加载 ,懒加载,lazy

Hibernate延迟加载有很多配置方法,本文主要说明几种常用的配置方法,以及在Session的get()和load()方法,Query对象的iterator()和list()方法中的效果.下面是本例用到的两张表.实体类和配置信息: Company表: Employee表(employee_company_id为外键) Company实体类: import java.util.Set; public class Company {    private int companyId;    pri

jQuery.imgLazyLoad图片懒加载组件

一.前言 当一个页面中请求的图片过多,而且图片太大,页面访问的速度是非常慢的,对用户的体验非常不友好:使用图片懒加载,可以减轻服务器的压力,增加页面的访问量,这里主要是总结一下我自己写的图片懒加载组件jQuery.imgLazyLoad:使用该组件应在img标签中设置一个imglazyload-src属性,存放图片地址. 二.应用实例demo /** * component: imgLazyLoad 2013/12/12 华子yjh * invoking: jQuery.imgLazyLoad(

抛砖引玉:大型网站性能优化之Javascript异步懒加载技术

懒加载技术是现在许多大型网站的都使用的提高网站性能的方式,它的核心思想是当用户想看页面某个区域时,再加载该区域的数据.这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度. 其实国内很多网站都用到了懒加载技术,比如国内两个大型电商网站的页面都运用到了这项技术: 天猫首页: 京东商品列表页: 最近在学习时,自己写了一个带懒加载功能的电影列表展示页,大家可以先看下页面效果: http://f81236211.w4w7.tumm.top/lazyload/ 然后自己在页面底部写了一个分页功能,页