懒加载的意义(在线demo预览)

尽管很多公司的网页都有一些限制,比如页面的最大的图片大小不得大于50k,也有很多图片优化工具fis3、gulp等等,但是如果图片太多还是会影响页面的加载速度,快则几十秒慢则几十分钟,这样会导致用户流失。

图片的加载对页面的加载速度有很大影响!!所以,对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。这样子对于页面加载性能上会有很大的提升,也提高了用户体验,即图片赖加载~

原理

将页面中的img标签src指向一张小图片或者src为空,然后定义data-src(这个属性可以自定义命名,我才用data-src)属性指向真实的图片。

当载入页面时,先把可视区域内的img标签的data-src属性值负给src,然后监听滚动事件,把用户即将看到的图片加载。这样便实现了懒加载。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片赖加载</title>
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<!-- 启用webAPP全屏模式-->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- 隐藏状态栏或者设置状态栏的颜色-->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- 忽略数字自动识别为电话号码-->
<meta name="format-detection" content="telephone=no">
<!--控制缓存的失效日期 -->
<meta http-equiv="Expires" content="-1">
<!-- 禁止转码-->
<meta http-equiv="Cache-Control" content="no-cache">
<!-- 禁止缓存访问页面-->
<meta http-equiv="Pragma" content="no-cache">
<meta name="applicable-device" content="mobile">
<!-- 页面关键词-->
<meta content="" name="keywords">
<meta name="description" content="">
<link rel="stylesheet" href="css/img_lazy.css">
</head>
<body>
<div class="main">
<img src="" data-src="data:images/1.jpg" alt="">
<img src="" data-src="data:images/2.jpg" alt="">
<img src="" data-src="data:images/3.jpg" alt="">
<img src="" data-src="data:images/4.jpg" alt="">
<img src="" data-src="data:images/5.jpg" alt="">
<img src="" data-src="data:images/6.jpg" alt="">
<img src="" data-src="data:images/7.jpg" alt="">
<img src="" data-src="data:images/8.jpg" alt="">
</div>
<!--图片赖加载的JS-->
<script src="js/imgLazyLoad.js"></script>
</body>
</html>
*{
margin:;
padding:;
box-sizing: border-box;
list-style: none;
border:;
outline:;
}
.main{
max-width: 640px;
width: 100%;
margin: 0 auto;
}
img{
display: block;
width: 100%;
height: 640px;
}
/**
* Created by Administrator on 2016/11/28.
*/
!function(){
var imgs = document.getElementsByTagName("img");
var num = imgs.length;
var n = 0; //存储图片加载到的位置,避免每次都从第一张图片开始遍历
lazyload(); //页面载入完毕加载可是区域内的图片
window.onscroll = lazyload;
function lazyload() { //监听页面滚动事件
var seeHeight = document.documentElement.clientHeight; //可见区域高度
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滚动条距离顶部高度
for (var i = n; i < num; i++) {
if (imgs[i].offsetTop < seeHeight + scrollTop) {
if (imgs[i].getAttribute("src") == "") {
imgs[i].src = imgs[i].getAttribute("data-src");
}
n = i + 1;
}
}
}
}();

最新文章

  1. Be careful about the upper limit of integer
  2. PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案
  3. jdbc在mysql下一次执行多条sql脚本
  4. 【Win10应用开发】自定义桌面壁纸
  5. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
  6. CSS基础知识真难啊-font
  7. Yii2 打印sql语句和批量插入数据
  8. [Liferay6.2]Liferay入门级portlet开发示例
  9. 资源Createwindow,对应标识符,绑定窗口
  10. 矩阵卷积Matlab(转载)
  11. hdu 3909 数独扩展
  12. WinForm调试输出数据
  13. jdk在windows中的配置
  14. Unity的Profiler性能分析
  15. MYSQL while 、repeat
  16. java 类、方法、代码块修饰式关键字总结
  17. 【XSY1594】棋盘控制 概率DP
  18. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理
  19. Linux性能及调优指南1.2之Linux内存架构
  20. &lt;低风险投资之路&gt;读书笔记

热门文章

  1. iOS 10 跳转系统设置
  2. Maven安装
  3. NOT IN 和NOT EXISTS
  4. 机器学习之sklearn——EM
  5. Matrix4x4矩阵变换、欧拉角转四元数、角度转弧度
  6. C++ std::multimap
  7. Javascript之函数模型
  8. JS入门
  9. MyBatis在insert插入操作时返回主键ID的配置
  10. 如何隐藏DIV对象