js实现图片懒加载效果


Posted in Javascript onJuly 17, 2017

本文实例为大家分享了js图片懒加载的具体代码,供大家参考,具体内容如下

图片懒加载,思路:当鼠标滑动到对应图片的高度时,进行图片的加载;

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
   #div{
    width: 575px;
    height: auto;
    overflow: hidden;
    border: red 1px solid;
    margin: 0 auto;
    /*给该div设置定位*/
    position: relative;
   }
   #div img{
    width: 267px;
    height: 396px;
    margin-left: 10px;
    border: 1px solid #000;
   }
  </style>
  <script type="text/javascript">
   function getPos(obj){
    var l = 0;
    var t = 0;
    while(obj){
      
     l += obj.offsetLeft;
     t += obj.offsetTop;
     obj = obj.offsetParent;
    }
    return {left:l ,top : t}
   }
   window.onload = window.onscroll = function(){
    //获取到img
     var aImg = document.getElementsByTagName("img");
    //获取到它的scrollTop 值 考虑兼容问题
     var oScrollTop = document.documentElement.scrollTop || document.body.scrollTop;
//    clientHeight = 上下padding + height
     var clientH = document.documentElement.clientHeight;
     //循环遍历每一项通过调用获取到每一个i 项对象的top 值
     for (var i = 0;i<aImg.length;i++) {
      var aImgTop = getPos(aImg[i]).top;
//      当滚动的时候进行判断,看他的滚动的高度加上它的clientHeight 是否比它的 top 值大 
//      如果大或等于说明滚动到当前位置可以加载图片
      if (oScrollTop + clientH >= aImgTop) {
//       进行图片的加载
       aImg[i].src = aImg[i].getAttribute("_src");
      }
     }
   }
  </script>
 </head>
 <body>
  <div id="div">
   <img _src="../img/1.jpg"/>
   <img _src="../img/2.jpg"/>
   <img _src="../img/3.jpg"/>
   <img _src="../img/4.jpg"/>
   <img _src="../img/6.jpg"/>
   <img _src="../img/7.jpg"/>
   <img _src="../img/1.jpg"/>
   <img _src="../img/2.jpg"/>
   <img _src="../img/3.jpg"/>
   <img _src="../img/4.jpg"/>
   <img _src="../img/6.jpg"/>
   <img _src="../img/7.jpg"/>
   <img _src="../img/3.jpg"/>
   <img _src="../img/4.jpg"/>
   <img _src="../img/6.jpg"/>
   <img _src="../img/7.jpg"/>
  </div>
 </body>
</html>

当有类似于瀑布流的布局时常用的加载模式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
EasyUI中的tree用法介绍
Nov 01 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
怎么判断js脚本加载完成
Feb 28 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
JS中常用的正则表达式
Sep 29 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
JS pushlet XMLAdapter适配器用法案例解析
Oct 16 Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 #Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 #Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 #Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 #Javascript
node.js express中app.param的用法详解
Jul 16 #Javascript
Node.js中流(stream)的使用方法示例
Jul 16 #Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 #Javascript
You might like
php5.2时间相差8小时
2007/01/15 PHP
php 判断数组是几维数组
2013/03/20 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
详解python上传文件和字符到PHP服务器
2017/11/24 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
python字符串常用方法
2018/06/14 Python
基于python实现简单日历
2018/07/28 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python 等差数列末项计算方式
2020/05/03 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
学校安全检查制度
2014/01/27 职场文书
初二生物教学反思
2014/02/03 职场文书
军训自我鉴定范文
2014/02/13 职场文书
采购助理岗位职责
2014/02/16 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
教师考核评语大全
2014/12/31 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
Vue3中的Refs和Ref详情
2021/11/11 Vue.js