惰性加载lazy load无法实现

oocute 2017-03-20 04:58:01

首先载入这两个框架

接下来写img,src内写的是gif图,data-original内写的是真实图片

本来想在js文件里写,不过这个被控制器控制,所以写在controller里面。
...全文
226 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
#麻辣小龙虾# 2017-03-23
  • 打赏
  • 举报
回复
给你一段,自己写的!拿去用。记得把把图的src的url绑定在data-src自定义中
<script type="text/javascript" data-src="lazyload">

	!function(){
		function getAbsPoint(e)
		{
			var x = e.offsetLeft;
			var y = e.offsetTop;
			while(e = e.offsetParent)
			{
				x += e.offsetLeft;
				y += e.offsetTop;
			}
			return {'x': x, 'y': y};
		};
		
		var imgs = document.getElementsByTagName("img");
		var num = imgs.length;
		var n = 0; //存储图片加载到的位置,避免每次都从第一张图片开始遍历
		lazyload(); //页面载入完毕加载可是区域内的图片
		window.onscroll = lazyload;
		function lazyload() { //监听页面滚动事件
			//console.log("aaa");
			var seeHeight = document.documentElement.clientHeight; //可见区域高度
			//console.log(seeHeight);
			var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滚动条距离顶部高度
			//console.log(scrollTop);
			for (var i = n; i < num; i++) {
				if (getAbsPoint(imgs[i]).y < seeHeight + scrollTop) {
					if (imgs[i].getAttribute("src") == "") {
						imgs[i].src = imgs[i].getAttribute("data-src");
					}
					n = i + 1;
				}
			}
		}
	}();

</script>
蚂蚁上树 2017-03-22
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
JF
快乐起航2020 2017-03-22
  • 打赏
  • 举报
回复
每一行设置断点 调试下呗 aler(1);、、、aler(2);、、aler(3); 说不定引入的脚本都没有作用
oocute 2017-03-20
  • 打赏
  • 举报
回复

自己解决啦

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧