js图片预加载和图片懒加载
2016-11-13 21:58
246 查看
预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。
预加载是牺牲服务器前端性能,换取更好的用户体验,这样可以使用户的操作得到最快的反映。
实现预加载常用方式是:new Image()。
Image对象的src属性 : 当我们给Image对象的src属性赋值一个url的时候,这个Image对象就去会加载url资源,加载完成以后的资源被保存到浏览器的缓存文件夹里面,下次如果我们要去调用这个url地址的时候,直接是从缓存文件夹读取到的,所以速度很快。
懒加载也叫延迟加载:延迟加载图片或符合某些条件时才加载某些图片。
意义: 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。
可视区加载实现方式:即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离便开始加载,这样能保证用户拉下时正好能看到图片。
步骤:
1、网页中的图片,都设为同一张很小的图片(src=”img/white.JPG”)。
2、给图片增加 _src=”img/1.jpg” 的属性,保存这张图片的真实地址。
3、当滚动条到达用户可视区域后,将_src的属性值赋值给src。
预加载是牺牲服务器前端性能,换取更好的用户体验,这样可以使用户的操作得到最快的反映。
实现预加载常用方式是:new Image()。
Image对象的src属性 : 当我们给Image对象的src属性赋值一个url的时候,这个Image对象就去会加载url资源,加载完成以后的资源被保存到浏览器的缓存文件夹里面,下次如果我们要去调用这个url地址的时候,直接是从缓存文件夹读取到的,所以速度很快。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <script type="text/javascript"> window.onload=function(){ var oImage=new Image(); var arr=[ 'http://img7.yiihuu.com/990X524/upimg/works/2012/06/26/112417qyZ.jpg?auto=w', 'http://img05.tooopen.com/products/20140421/86777658.jpg', 'http://d04.res.meilishuo.net/pic/_o/68/e1/6b50f891e40dfbe88fd272c81581_570_455.c6.jpg_cef0a913_s1_q0_150_5_0_226_800.jpg', 'http://image.tuolar.com/img/uimg/201004/17/7/ztr7r1271502487_300.jpg', 'http://img1.touxiang.cn/uploads/20120609/09-034337_553.jpg', 'http://img05.tooopen.com/products/20140421/61637868.jpg' ] var iCur=0; preLoadImg(); function preLoadImg(){ oImage.src=arr[iCur]; oImage.onload=function(){ iCur++; if (iCur<arr.length) { preLoadImg(); } document.title = iCur + ' / ' + arr.length; } } var oImg=document.getElementById("img1"); var i=0; oImg.onclick=function(){ i++; if (i<arr.length) { oImg.src=arr[i]; } } } </script> <body> <img id="img1" src="http://img7.yiihuu.com/990X524/upimg/works/2012/06/26/112417qyZ.jpg?auto=w" /> </body> </html>
懒加载也叫延迟加载:延迟加载图片或符合某些条件时才加载某些图片。
意义: 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。
可视区加载实现方式:即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离便开始加载,这样能保证用户拉下时正好能看到图片。
步骤:
1、网页中的图片,都设为同一张很小的图片(src=”img/white.JPG”)。
2、给图片增加 _src=”img/1.jpg” 的属性,保存这张图片的真实地址。
3、当滚动条到达用户可视区域后,将_src的属性值赋值给src。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } img{ display: block; } #ul1{ width: 808px; margin: 0 auto; list-style: none; } #ul1 li{ float: left; margin: 10px; border: 1px solid olivedrab; } #ul1 li img 4000 { width: 180px; height: 180px; } </style> <script type="text/javascript"> window.onload=function(){ var oUl=document.getElementById("ul1"); var aImg=oUl.getElementsByTagName('img'); var iLen=aImg.length; showImg(); window.onscroll=showImg; function showImg(){ var scrollTop=document.documentElement.scrollTop || document.body.scrollTop; for (var i=0; i<iLen; i++) { //!aImg[i]表示图片已经被加载过,则无需再加载 if ( !aImg[i].isLoad && getTop(aImg[i])<scrollTop+document.documentElement.clientHeight) { aImg[i].src=aImg[i].getAttribute('_src'); aImg[i].isLoad=true; } } } //获取obj到页面上边框的绝对距离 function getTop(obj){ var iTop=0; while(obj){ iTop+=obj.offsetTop; obj=obj.offsetParent; } return iTop; } } </script> </head> <body> <ul id="ul1"> <li><img _src="img/2.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/2.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/2.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/2.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> <li><img _src="img/2.jpg" src="img/white.JPG"/></li> <li><img _src="img/3.jpg" src="img/white.JPG"/></li> <li><img _src="img/4.jpg" src="img/white.JPG"/></li> </ul> </body> </html>
相关文章推荐
- js实现图片预加载 imgpreLoad.js
- js带预加载特效的tab标签图片切换
- vue.js上传图片时同时加载图片展示图片
- 利用JS实现简单的瀑布流加载图片效果
- JS+AS实现真正页面加载图片进度条(带百分比)
- iOS 加载js获取webView中图片url
- 缓冲加载图片的 jQuery 插件 lazyload.js 使用方法详解
- js实现网页图片延时加载 提升网页打开速度
- jq/js判断图片是否加载完毕
- js预加载图片
- 纯JS图片批量预加载技术代码
- js 一个关于图片onload加载的事
- 图片延迟加载 JS jQuery 插件 Lazy Load
- js或者jquery判断图片是否加载完成实现代码
- js图片预加载
- js图片延迟加载
- (JS)图片延时加载,爽爽看美图(From 杨中科)
- js实现图片预加载模块化
- Thinkphp5.0加载css js 图片路径问题
- apache代理tomcat无法加载css,js,图片等资源的解决方法