原生javascript图片懒加载效果代码。

原理是先获取页面所需懒加载的所有图片对象,然后分别计算图片距离顶部的距离是否小于屏幕可见高度+页面滚动高度,即元素是否从下滚动到眼球可见位置,如果小于,那么将自定义的data-src属性中的值(即图片的URL地址赋值给src属性,完成请求加载)。监听页面滚动事件即可!定义n 值存储起来可以更好的记录到滚动可见的图片,避免重复循环,提高性能。

<!doctype html>

<html>

<head>

	<title>index</title>

	<meta charset="utf-8">

	<meta name="renderer" content="webkit">

	<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" >

	<meta name="keywords" content="{$web['web_key']}">	<!--关键词-->

	<meta name="description" content="{$web['web_description']}">	<!--网站描述-->


</head>

<body>

	<div style="width:100%;overflow:hidden;"> <!--容器标签开始-->

	<!--header start-->

		<include file="common/header"/>

	<!--header end-->

	

	

	<!--mainBox start-->

	<div class="main">

		<div class="article-list">

			<div class="container title">

				<h5>注册香港公司相关资料</h5>

				<!-- <a href="" class="more">查看全部 >></a> -->

			</div>

			<div class="container list">

				<foreach name="art" item="value">

					<dl>

						<dt>

							<img src="" alt="" title="{$value['art_title']}" data-src="">

						</dt>

						<dd class="title">

							<a href=""><strong></strong></a>

						</dd>

						<dd class="detail">

							{$value['art_intro']}

						</dd>
						<dd class="detail">{$value['art_addtime']|date="Y-m-d H:i:s",###}</dd>
						<dd class="consolution">

							<!-- <a href="" target="_blank">立即咨询>></a> -->
							<a href="" title="" target="_blank">了解更多>></a>
						</dd>

					</dl>

				</foreach>

			</div>

		</div>





		<!--footer start-->

			<include file="common/footer"/>

		<!--footer end-->

	</div>

	<!--mainBox end-->



	</div><!--容器标签结束-->

</body>
<script>
!function(){
	//获取元素距离页面顶部的绝对距离
	function getAbsPoint(e)
	{
		var x = e.offsetLeft;
		var y = e.offsetTop;
		while(e = e.offsetParent)	
		//等同于while(e.offsetParent){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() { //监听页面滚动事件
        var seeHeight = document.documentElement.clientHeight; //可见区域高度
        var scrollTop = document.documentElement.scrollTop || document.body.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>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值