JS -- 下滑加载图片

  1 <!DOCTYPE html>
  2 <html lang="cn">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>下滑加载图片</title>
  6     <style type="text/css">
  7         #imglist{
  8             width: 100%;
  9             margin: 0 auto;
 10         }
 11         #imglist img{
 12             width: 600px;
 13             height: 350px;
 14             background: url(‘./imgs/loading.gif‘) no-repeat 50% 50%;
 15         }
 16     </style>
 17 </head>
 18 <body>
 19     <h1>下滑加载图片</h1>
 20     <hr>
 21
 22     <div id="imglist">
 23         <img data-src="./imgs/Meinv001.jpg">
 24         <img data-src="./imgs/Meinv002.jpg">
 25         <img data-src="./imgs/Meinv003.jpg">
 26         <img data-src="./imgs/Meinv004.jpg">
 27         <img data-src="./imgs/Meinv005.jpg">
 28         <img data-src="./imgs/Meinv006.jpg">
 29         <img data-src="./imgs/Meinv007.jpg">
 30         <img data-src="./imgs/Meinv008.jpg">
 31         <img data-src="./imgs/Meinv009.jpg">
 32         <img data-src="./imgs/Meinv010.jpg">
 33         <img data-src="./imgs/Meinv011.jpg">
 34         <img data-src="./imgs/Meinv012.jpg">
 35         <img data-src="./imgs/Meinv013.jpg">
 36         <img data-src="./imgs/Meinv014.jpg">
 37         <img data-src="./imgs/Meinv015.jpg">
 38         <img data-src="./imgs/Meinv016.jpg">
 39     </div>
 40
 41     <script>
 42         var imgs = imglist.getElementsByTagName(‘img‘);
 43         // 获取 imglist 的宽度
 44         // offsetWidth  返回元素的宽度
 45         var box_width = imglist.offsetWidth;
 46         // console.log(box_width);
 47         // 获取视口的高度
 48         var view_height = document.documentElement.clientHeight;
 49         // console.log(view_height);
 50
 51         // 计算横着能加载图片的张图
 52         // var x_number = 舍去取整(box宽 / img宽)
 53         var x_number = Math.floor(box_width / imgs[0].offsetWidth);
 54         // console.log(x_number);
 55
 56         // 首屏图片的数量
 57         // Math.ceil((视口高 - 首图的顶部偏移量) / 图片高) * 横向图片数量
 58         var first_number = Math.ceil((view_height - imgs[0].offsetTop) / imgs[0].offsetHeight) * x_number;
 59         // console.log(first_number);
 60
 61         var m = 0;// 总计录数
 62         loadImage(m, first_number);
 63         m += first_number;
 64
 65
 66         // 绑定滚动事件
 67         window.onscroll = function() {
 68             if (m >= imgs.length) return;
 69             // 滚动条滚动距离
 70             var top = document.body.scrollTop || document.documentElement.scrollTop;
 71
 72             // 获取 还未加载的第一张图片 到顶部的偏移量
 73             var img_top = imgs[m].offsetTop;
 74
 75             // 判断 加载临界点
 76             if ((top + view_height) >= img_top) {
 77                 loadImage(m, x_number);
 78                 m += x_number;
 79             }
 80         }
 81
 82
 83         /**
 84          * 加载图片函数
 85          * @param   start  从第几张开始加载
 86          * @param   length 加载几张
 87          */
 88         function loadImage(start, length) {
 89             for (var i = start; i < (start+length); i++) {
 90                 if (i >= imgs.length) return;
 91                 (function(i){
 92                     setTimeout(function () {
 93                         imgs[i].src = imgs[i].getAttribute(‘data-src‘);
 94                     }, 500);
 95                 })(i);
 96             }
 97         }
 98
 99     </script>
100 </body>
101 </html> 这是js做的一个下滑才会加载图片页面,这样可以节省服务器的性能,图片需自行添加,不足之处望见谅

原文地址:https://www.cnblogs.com/qbhgy/p/9594127.html

时间: 2024-10-19 16:50:18

JS -- 下滑加载图片的相关文章

js 预加载图片image()函数

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片. 图像对象: 建立图像对象:图像对象名称=new Image([宽度],[高度]) 图像对象的属性: border complete height hspace lowsrc name src vspace width 图像对象的事件:onabort onerror onkeydown onkeypress onkeyup

用javascript预加载图片、css、js的方法研究

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提升用户体验.在用到一些大图片展示的时候,预加载大图是很不错的方法,图片更快的被呈现给用户.不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果. 先说需要知道的服务器返回的status code:status-code: 200 - 客户端请求成功status-code: 304 -

JS懒加载

4.如何使用js懒加载图片 a.懒加载图片是基于jquery.js的,所以: <script src="jquery.js" type="text/javascript"></script> <script src="jquery.lazyload.js" type="text/javascript"></script> b. 需要懒加载的图片,①.增加 data-origina

JQuery缓冲加载图片插件lazyload.js的使用方法

lazyload.js是一个基于JQuery的插件,可以用来缓冲加载图片.如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动情况来加载你需要看的图片,然后它才会从后台请求下载图片,最后显示出来.通过这个插件,可以在需要显示图片的时候,才下载图片,从而可以减少服务器的压力,提高页面加载速度. Lazy Load 插件原理 修改目标img元素的src属性为orginal属性,从而中断图片的加载.检测滚动状态,然后把网页可视区

处理页面加载图片js(等比例压缩图片)

第一页面html  <div class="admin">${answer.content}</div> <div class="adminss">${answer.content}</div> 第二循环压缩${answer.content}内容中的大图片 <script> jQuery(function(){ setTimeout('imgLoad()'1000)//延长加载一分钟 }); functio

js中预加载图片

由于网页的一些图片加载都需要很长时间,所以为了缓解图片加载慢的问题,页面可以先预加载图片,代码如下: /*预加载图片*/var imgList = []; var imgArr = ["bg02.gif","video_btm.jpg"]; for(var i=0;i<imgArr.length;i++){ var img = new Image(); img.src = imgArr[i]; imgList.push(img); }

JS 页面加载触发事件 document.ready和window.onload的区别

document.ready和onload的区别——JavaScript文档加载完成事件页面加载完成有两种事件: 一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件): 二是onload,指示页面包含图片等文件在内的所有元素都加载完成. 1.Dom Ready 使用jq时一般都是这么开始写脚本的: $(function(){ // do something }); 例如: $(function() { $("a").click(function() { alert(&

页面优化——js异步加载

同步加载 在介绍js异步加载之前,我们先来看看什么是js同步加载.我们平时最常使用的就是这种同步加载形式: <script src="http://XXX.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像).渲染.代码执行.一般的script标签(不带async等属性)加载时会阻塞浏览器,也就是说,浏览器在下载或执行该js代码块时,后面的标签不会被解析,例如在he

JS异步加载的几种方式

一:同步加载 我们平时使用的最多的一种方式. <script src="http://yourdomain.com/script.js"></script> <script src="http://yourdomain.com/script.js"></script> 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析,只有当当前加载完成,才能进行下一步操作.所以默认同步执行才是安全的.但这样如果js中有输