【JavaScript】图片懒加载
来源:互联网 发布:wpf 漂亮界面 源码 编辑:程序博客网 时间:2024/05/16 12:28
图片懒加载指的是不直接给src赋值,当图片需要显示的时候才被赋值
(比如当页面滚动时只加载当前能看到的图片,看不到的部分未加载,当页面向上滚动时,下面的图片才加载出来)
这种方式不会影响图片的显示,同时最大程度上减少服务器端的资源耗用,使网页更加流畅。
一般大型网站,图片比较多,会使用图片懒加载。
步骤:
1.给图片自定义一个属性,保存真正图片地址,src先给一张占位图(占位图一般只有一张)
2.当滚动页面,图片到达可视区,再给src赋真正地址,并且删除自定义属性
如下图:网页页面不断向上滚动,当图片A到达图片B的位置时,马上要进入到用户可视区,此时将图片的真正地址赋给src,变为真正要显示的图片,此时,sTop+cHeight=offsetT,(offsetT是图片距离页面顶部的距离)由于滚动时,sTop+cHeight或许不会刚好等于offsetT,所以当sTop+cHeight>=offsetT时,修改src
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css"> #box{width:500px; margin:auto;}#box li{height:300px;border:5px solid red;margin-bottom:250px; }#box li img{width:100%;height:100%;}</style></head><body> <div id="box"><ul><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/2.jpg"/></li><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/3.jpg"/></li><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/4.jpg"/></li><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/5.jpg"/></li><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/6.jpg"/></li><li><img src="http://g.alicdn.com/s.gif" alt="" lazy-src="img/7.jpg"/></li></ul></div> <script> //滚上去的距离+页面可视区的高度>=图片距离页面顶部的距离//获取DOM对象--所有li元素的集合var lists=document.querySelectorAll("#box li");window.onscroll=function(){//监听页面滚动,页面滚动则触发此方法//滚出去的距离var sTop=getScrollTop();//页面可视区的高度var cHeight=getClientHeight()for(var i=0;i<lists.length;i++){//图片距离页面顶部的距离var offsetT=getOffsetTop(lists[i]);//获取到lazy-src的属性值,即图片的真正地址var imgObj=lists[i].children[0];var la_src=imgObj.getAttribute("lazy-src");//标签内自定义属性只能通过get/setAttribute() //进入可视区,并且src没有被修改过(修改过的lazy-src已经被删除了,保存的是null)if(sTop+cHeight>=offsetT&&la_src){//修改src imgObj.src=la_src;//删除lazy-src属性imgObj.removeAttribute("lazy-src");}}}//滚出去的距离(兼容谷歌和火狐) function getScrollTop(){ return document.body.scrollTop||document.documentElement.scrollTop; } //获取可视区域高度 function getClientHeight(){ return window.innerHeight||document.documentElement.clientHeight; } //获取元素到顶部的距离 function getOffsetTop(ele){var top=0;//当ele是body的时候就可以跳出去了(因为body没有偏移父元素)while(ele.offsetParent!=null){top+=ele.offsetTop+ele.offsetParent.clientTop;ele=ele.offsetParent;}return top;}</script></body></html>
阅读全文
0 0
- JavaScript 懒加载图片
- 【JavaScript】图片懒加载
- JavaScript进阶--图片懒加载
- javascript 图片 懒加载、预加载
- 原生javascript图片懒加载效果代码。
- 基于javascript实现图片懒加载
- JavaScript:原生JS实现图片懒加载
- JavaScript 预先加载图片
- javascript图片加载
- javascript图片延迟加载
- javascript延迟加载图片
- javascript图片预加载
- Javascript图片预加载
- javascript图片懒加载与预加载的分析
- Javascript之预加载图片
- JavaScript实现图片预加载
- javascript图片预加载技术
- javascript图片预加载技术
- AI专家呼吁结束政府中的“黑箱“算法
- vim 安装 使用 教程
- 硅谷顶级人工智能大会将在本周五盛大召开
- 谷歌正在教AI人类如何拥抱,做菜,和打架
- JSP复习二
- 【JavaScript】图片懒加载
- aws ec2允许root用户密码登陆
- js的dom对象操作
- 两杯水交换
- Solr5.5.5环境搭建
- 广电智能推荐点播系统实践5-ElasticSearch实践
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- win7(win10)环境下的TensorFlow和Openslide安装及测试
- FTP,TFTP网络数据流文件还原及异步存储设计