关于前端惰性加载(jquery_lazyload)的使用和原理分析

1.前言

有时我们会有这样的需求,当网页有很多张图片的时候,我们不希望一次性就把图片加载完,而是希望当浏览器滑动到指定位置的时候再加载,这样可以节省带宽,它也能帮助减轻服务器负载。那么这种需求就需要利用lazyload了。

jquery_lazyload.js是基于jq的一个扩展,需要引入jq后使用。

2.使用方法

2-1.引入jquery和lazyload拓展

<script src="jquery-1.11.0.min.js"></script>
<script src="jquery.lazyload.js?v=1.9.1"></script>

2-2.通过class指定标签,src指定家在前的图片,data-original指定加载后的图片。

<img class="lazy" src="img/jd.png" data-original="img/bmw_m1_hood.jpg">
<img class="lazy" src="img/jd.png" data-original="img/bmw_m1_side.jpg">

2-3.传递参数绑定lazyload事件

<script type="text/javascript" charset="utf-8">
  $(function() {
      $("img.lazy").lazyload({
      placeholder : "img/grey.gif", //用图片提前占位
     // placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏
     // effect: "fadeIn", // 载入使用何种效果
    // effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
     // threshold: 200, // 提前开始加载
    // threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉
     event: ‘click‘,  // 事件触发时才加载
    // event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…
     //container: $("#container"),  // 对某容器中的图片实现效果
    // container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片
    //failurelimit : 10 // 图片排序混乱时
     // failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题.
     });
 });
</script>
时间: 2024-10-12 15:46:25

关于前端惰性加载(jquery_lazyload)的使用和原理分析的相关文章

网页前端页面加载性能测试各工具可行性方案分析

网页前端页面加载性能测试各工具可行性方案分析 征对各个浏览器和工具做了测试,之所以选择的是百度首页测试,因为其比较单一,没有多层嵌套和持续加载,尽量减少其他影响,测试中发现目前有些方案是不可行的,后面征对各个测试结果给出了可行方案和不可行的建议. 1 .webbrowser(内核IE10)和IE10浏览器的比较: Webbrowser的测试方法为,先执行清除浏览器缓存,从开始导航开始计时,DocumentCompleted时间将2次触发,取最后一次的时间,按照DocumentCompleted解

PDF在线阅读 FlexPaper 惰性加载 ;

关于PDF在线阅读问题,比较普遍的做法是转换成swf文件来浏览:由于项目需要,就用 flexpaper 来实现了下,功能比较简单:但是文件的惰性加载确实让笔者挠头了一把! 下面是笔者的方法: 采用流的方式来读取每一页的swf文件,然后展示(pdf转换成多个swf文件网上一大把):亲自测试,100M的pdf文档,转换后在线浏览,延迟不超过1s; JSP页面 : <%@ page language="java" import="java.util.*" pageE

判断浏览器是否支持CSS3 已经初步探索JS 惰性加载

分享一个判断浏览器是否支持的函数,然后有牵扯到了一个懒性加载的概念. var iscss3=(function(){ var _style=document.createElement("div").style; return 'transition' in _style||'mozTransition' in _style||'webkitTransition' in _style; })() 什么是惰性加载呢,像我们JS和CSS一样 很多浏览器属性和方法都不兼容,需要用到大量的分支

高阶函数 - 惰性加载函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>高阶函数 - 惰性加载函数</title> </head> <body> <div style="width: 100px; height: 100px; background: #f60;" id=&quo

JS设计模式—单体模式(即时加载/惰性加载)

单体模式作为一种软件开发模式在众多面向对象语言中得到了广泛的使用,在javascript中,单体模式也是使用非常广泛的,但是由于javascript语言拥有其独特的面向对象方式,导致其和一些传统面向对象语言虽然在单体模式的思想上是一致的,但是实现起来还是有差异的. 首先来看看传统面向对象语言对于单体模式的定义:单体模式是只能被实例化一次并且可以通过一个众所周知的访问点来访问的类.这个定义有两点突出了传统面向对象语言的特征,即类和实例化,所以对于传统面向对象语言来讲,单体模式是建立在其类和实例化的

angular惰性加载实现2020

1.命令:ng generate module customers --routing 这会创建一个 customers 目录,其中有两个文件:CustomersModule 和 CustomersRoutingModule. CustomersModule 扮演的是与客户紧密相关的所有事物的管理员.CustomersRoutingModule 则会处理任何与客户有关的路由. CLI 会把 CustomersRoutingModule 自动导入到 CustomersModule.它会在文件的顶部

对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

最近在研究HTML页面中JavaScript的执行顺序问题.在JavaScript中,定义一个方法或者函数有很多方式,最常见的有2中,function语句式与函数直接量方式. 对于function语句式,解释器会优先解释.即加载了这个js文件后,会扫描一下所有的js代码,然后把该优先执行的东西先执行了,然后再从上到下按顺序执行.所以,定义的代码可以在执行的代码后边.就跟C#中的方法定义一样.解释器已经记住了这个方法,知道在内存中的哪里,用的时候直接去取就行了. C#语言是,对象中的属性与方法具有

Android布局文件的加载过程分析:Activity.setContentView()源码分析

大家都知道在Activity的onCreate()中调用Activity.setContent()方法可以加载布局文件以设置该Activity的显示界面.本文将从setContentView()的源码谈起,分析布局文件加载所涉及到的调用链.本文所用的源码为android-19. Step 1  .Activity.setContentView(intresId) public void setContentView(int layoutResID) { getWindow().setConten

基于requirejs+bluebird,50行代码实现轻巧实用的前端CMD加载器

首先是github地址,可以用git克隆命令也可以直接在git页面下载 https://github.com/kazetotori/js-requireAsync 下载下来后目录结构是这样的 -package.json -index.js -node_modules --bluebird --jquery --requirejs requireAsync函数 requireAsync函数是index.js里定义的一个全局函数,该函数接受无限多个字符串参数,参数为需要加载的模块名或模块路径,路径不