js延时加载实现

实现原理:将img标签里的src属性设为同一张空白图片(封面图片),再自定义一个属性,属性值为图片的真实路径,通过js监听图片元素进入可视窗口时,将自定义属性中的地址存储到src属性中。其中用了淡入淡出增加了效果。

下面是一个简单的样式布局

  *{padding: 0;margin: 0;}
		ul{width:828px;margin: 50px auto;}
		li{list-style: none;float: left;width: 264px;height: 198px;margin-right: 10px;margin-bottom: 15px;border: 1px solid red;}
		img{width: 264px;height: 198px;}

  <ul>
			<li><img src="img/loading2.jpg" data-img="imgs/1.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/13.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/14.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/15.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/2.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/22.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/23.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/27.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/28.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/29.jpg"/></li>
			<li><img src="img/loading2.jpg" data-img="imgs/3.jpg"/></li>
		</ul>

js部分,也有jquery的

<script type="text/javascript">
				(function(){
					var arr = []
					window.onload = window.onscroll = function(){
						if(window.cFlag) return
						var $imgs = $("img[src]")
//						获取可视窗口高度
						var WH = window.innerHeight || document.documentElement.clientHeight
//						获取滚动条高度
						var ST = document.body.scrollTop ||document.documentElement.scrollTop
//						遍历图片
						for(var i=0,len=$imgs.length;i<len;i++){
//							获取图片高度
							var imgTop = $imgs[i].offsetTop
//							做判断
							if(!$imgs[i].flag && imgTop < WH + ST ){
								(function(index){
									$($imgs[index]).fadeOut(function(){
										var data_img = $imgs[index].getAttribute("data-img")
										$imgs[index].setAttribute("src",data_img)
									}).fadeIn()
								})(i)
								
//								设置标识
								$imgs[i].flag = true
								arr.push()
							}
						}
						if(arr.length == $imgs.length){
							window.cFlag = 1
						}
					}
				})()
</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值