本文本内容拷贝至:https://blog.csdn.net/xuanwuziyou/article/details/48199123

当一个网页中有大量图片时,浏览器会逐个去下载这些图片,等全部下载完毕再执行其它操作,而浏览器本身的http请求的最大并发数量(通常是2个,最多的也只是8个)又限制了全部图片完成下载的时间,这样网页的速度会很慢,导致很差的用户体验。

一个好的实践是当用户向下滚动页面时,在图片出现在用户的可视范围内的时候,去请求相应图片并加载,比如淘宝的页面,这样按需加载图片可省去不必要的带宽浪费(用户可能并不会浏览完本页的全部图片),同时让页面保持快速响应。

实现的原理很简单,就是对于<img>标签,先不要写上它的资源地址src(因为只要写上了,浏览器加载到这个img标签,就会去下载src指向的图片资源),可以把它的资源地址先写在一个临时属性里,下面用到的一段js(相当于一个js小插件)中写在了一个属性originalSrc里(这个属性叫啥都可以的),然后给<img>标签们绑定事件,这个事件就是判断其是否出现在了浏览器的当前显示区域,如果出现了,就把originalSrc指示的资源地址写给<img>标签的src,src写入后浏览器就会去下载图片资源,如此就实现了图片的延迟加载。

用到jquery.js文件和 lyz.delayLoading.min.js 文件(不知哪位牛人写的,学习了!)

<div>

<img originalSrc="images/img1.png"/>

<img originalSrc="images/img2.png"/>

<img originalSrc="images/img3.png"/>

<img originalSrc="images/img4.png"/>

<img originalSrc="images/img5.png"/>

<img originalSrc="images/img6.png"/>

</div>

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

<script src="js/lyz.delayLoading.min.js" type="text/javascript"></script

<script>

$(function () {

  $("img").delayLoading({  

               defaultImg: "images/loading.png",   // 预加载前显示的图片    

                errorImg: "",   // 读取图片错误时替换图片(默认:与defaultImg一样)    

                imgSrcAttr: "originalSrc",//记录图片路径的属性(默认:originalSrc,页面img的src属性也要替换为originalSrc)    

               beforehand: 0,  // 预先提前多少像素加载图片(默认:0)    

                event: "scroll", // 触发加载图片事件(默认:scroll)    

                duration: "normal", // 三种预定淡出(入)速度之一的字符串("slow", "normal", or "fast")或表示动画时长的毫秒数值(如:1000),默认:"normal"    

                container: window,     // 对象加载的位置容器(默认:window)    

                success: function (imgObj) { }, // 加载图片成功后的回调函数(默认:不执行任何操作)    

                error: function (imgObj) { }  // 加载图片失败后的回调函数(默认:不执行任何操作)    

            });  

});

</script>

js-页面需展示大量图片时,采用lyz.delayLoading.min.js,图片在屏幕时加载显示的更多相关文章

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

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

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

    一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商城页面. 或者是前段时间写血本买了个高档耳机的京东商城页面,或者是新浪微博之类. 这些页面图片数量 ...

  3. [转]jQuery页面滚动图片等元素动态加载实现

    本文转自:http://www.zhangxinxu.com/wordpress/?p=1259 一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商 ...

  4. 浏览器加载显示html页面内容的顺序

    我们经常看到浏览器在加载某个页面时,部分内容先显示出来,又有些内容后显示.那么浏览器加载显示html究竟是按什么顺序进行的呢 其实浏览器加载显示html的顺序是按下面的顺序进行的:1.IE下载的顺序是 ...

  5. 一个页面从输入URL到加载显示完成,发生了什么?

    面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...

  6. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  7. Oracle11G登录时提示:ORA-12557: TNS:协议适配器不可加载

    原文 Oracle11G登录时提示:ORA-12557: TNS:协议适配器不可加载 初步分析是ORACLE_HOME设置错误引起的.前几天不小心看到系统环境变量中的其值为空,就手贱的加载了一个ora ...

  8. 当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败的解决办法

    当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败,折腾一段时间终于找到解决办法: 1.先在setting文件增加BASE_DIR(项目的路径) BASE_DI ...

  9. 一个页面从输入URL 到页面加载显示完成的过程中都发生了什么

    前端面试/笔试必考问题,越详细越好 先简单得讲: 浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求: 服务器交给后台处理完成后返回数据,浏览器接收文件(HTML.JS.CSS. ...

随机推荐

  1. redis代理集群(Twemproxy)(1)

    redis主从+哨兵模式只解决了读的分布式操作,大大提高了性能:但是写操作,只有主主机器才能进行,从机器无法进行写操作.此时,Twemproxy也就出现了. 这个模式单纯的安装有些复杂,需要引入很多的 ...

  2. COMP9021——6.3

    有关yield的用法简介以及图灵机 第一节课大体没有太大变化,前半节课为了给图灵机的讲解做铺垫引入了yield.数组.字符串和文件等都是一个可迭代的对象,但由于它们的所有数据都存储与内存中,对内存的消 ...

  3. 优酷项目之 ORM(数据库对象关系映射)代码重写

    前言: 我们在操作数据库时候一般都是通过sql代码来操作mysql数据库中相关数据,这就需要懂得sql语句,那么怎么样才能在不懂sql语句的情况下通过我们所学的python代码来实现对mysql数据库 ...

  4. springboot-vue-自定义注解限制接口调用

    新建注解: /** * 想要权限拦截的接口就加上这个注解 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Doc ...

  5. Go语言学习03

    Go语言-数组类型 一个数组(Array)就是一个可以容纳若干类型相同的元素的容器.这个容器的大小(即数组的长度)是固定的,且是体现在数组的类型字面量之中的.比如,我们声明了一个数组类型: type ...

  6. [转] sublime插件

    Sublime Text 系列 Sublime Text:学习资源篇 Sublime插件:增强篇 Sublime插件:Markdown篇 Sublime插件:C语言篇 Sublime插件:主题篇 Su ...

  7. day08 多线程socket 编程,tcp粘包处理

    复习下socket 编程的步骤: 服务端:   1 声明socket 实例 server = socket.socket()  #括号里不写  默认地址簇使用AF_INET  即 IPv4       ...

  8. JAVA 消耗 CPU过高排查方法

    #找出cpu占用最高的进程top -H#再次确定进程ps aux|grep 17408 #查看进程的线程(tid) ps -mp 17408 -o THREAD,tid,time#将线程转换为十六进制 ...

  9. 带有命名空间的xml解析,C#

    前一段时间做花旗的接口,返回的xml格式是带有命名空间的,可是难倒了我,找了好久才找到解决办法,给大家分享下,少走弯路. 1,直接进入正题,先看一段带有命名空间的xml,这段xml大概的意思是,前面是 ...

  10. 微信小程序的那些坑

    早闻微信小程序是个坑,结果名不虚传,细数一下我开发小程序遇过到坑. 1.UI组件过度封装. 微信小程序的组件是模仿react.js或vue.js的web组件设计的,并且封装了weui.css样式. P ...