<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
<title>图片预加载2017-10-17</title>
<style type="text/css">
*{padding: 0;margin: 0}
img{width: 100%;display: block;}
</style>
</head>
<body>
<div>
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="https://a-ssl.duitang.com/uploads/item/201210/24/20121024113044_vkmru.jpeg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://img01.sogoucdn.com/app/a/100540002/422283.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2013/08/09/357253.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://img01.sogoucdn.com/app/a/100540002/422289.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2015/05/29/1184364.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2015/01/27/1063571.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2014/07/16/733793.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2014/11/11/957398.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://img.bizhi.sogou.com/images/2013/09/22/387997.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://img.bizhi.sogou.com/images/2015/04/28/1159147.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2015/06/01/1186941.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2013/07/19/348659.jpg">
<img src="https://h5.quanchepin.com/templates/images/loadimg.png" data-src="http://dl.bizhi.sogou.com/images/2013/07/19/348291.jpg">
</div>
<!-- <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> -->
<script type="text/javascript">
// 图片加载js代码
window.echo=(function(window,document,undefined){'use strict';var store=[],offset,throttle,poll;var _inview=function(el){var coords=el.getboundingclientrect();return((coords.top>=0&&coords.left>=0&&coords.top)<=(window.innerheight||document.documentelement.clientheight)+parseint(offset));};var _pollimages=function(){for(var i=store.length;i--;){var self=store[i];if(_inview(self)){self.src=self.getattribute('data-src');store.splice(i,1);}}};var _throttle=function(){cleartimeout(poll);poll=settimeout(_pollimages,throttle);};var init=function(obj){var nodes=document.queryselectorall('[data-src]');var opts=obj||{};offset=opts.offset||0;throttle=opts.throttle||250;for(var i=0;i<nodes.length;i++){store.push(nodes[i]);}_throttle();if(document.addeventlistener){window.addeventlistener('scroll',_throttle,false);}else{window.attachevent('onscroll',_throttle);}};return{init:init,render:_throttle};})(window,document);
echo.init({
offset: 100,//离可视区域多少像素的图片可以被加载
throttle: 0,//图片延时多少毫秒加载
els: '.jsloadimg',
elp: '.lazy-img',
datasrc: 'data-src'
});
</script>
</body>
</html>
原理是把真实的图片路径放在src里面,先加载src里面的小图片,等页面滚动到相应的位置,就把src的内容赋给src。
主要代码是“图片预加载js代码”,然后调用传参数,跟使用jquery插件一样,只不过这里不需要jquery。
效果如下:
1、没有预加载的时候要加载13m
2、有预加载的时候只需先加载2.6m
因为我这里用的图片很多都是在不同的域名下的,所以它们可以同时加载,如果图片都是在同一域名下的效果更佳明显。
以上就是js图片预加载实例的详细内容。