js页面可视区域懒加载

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
    margin: 0;
}
ul{
    margin: 0;
    padding: 0;
    list-style: none;
}
img{
    border: none;
    vertical-align: middle;
}
.in{
    border: 1px solid black;
    margin: 10px;
    text-align: center;
    height: 400px;
    width: 400px;
    float: left;
}
.in img{
    height: 400px;
    width: 400px;
}
</style>
</head>
<body>
<ul class="list">
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img1.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img2.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img3.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img4.gif"></li>    
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img1.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img2.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img3.gif"></li>
    <li class="in"><img src="img/loading.gif" alt="测试" data-original = "img/img4.gif"></li>                           
</ul>

<script>
var oBtn = document.getElementsByTagName('button')[0];
var aImages = document.images;
loadImg(aImages);
window.onscroll = function(){
    loadImg(aImages);
};
function loadImg(arr){
    for( var i = 0,len = arr.length; i < len; i++){
        if(arr[i].getBoundingClientRect().top < document.documentElement.clientHeight && !arr[i].isLoad){
            arr[i].isLoad = true;
            arr[i].style.cssText = "transition: ''; opacity: 0;"
            if(arr[i].dataset){
                aftLoadImg(arr[i],arr[i].dataset.original);    
            }else{
                aftLoadImg(arr[i],arr[i].getAttribute("data-original"));
            }
            (function(i){
                setTimeout(function(){
                    arr[i].style.cssText = "transition: 1s; opacity: 1;"
                },16)
            })(i);
        }
    }
}
function aftLoadImg(obj,url){
    var oImg = new Image();
    oImg.onload = function(){
        obj.src = oImg.src;
    }
    oImg.src = url;
}

</script>    
</body>
</html>

 

转载于:https://www.cnblogs.com/yuri2016/p/7838432.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lazyload 页面可视加载是一种优化网页加载速度的技术。传统网页加载通常会一次性加载所有的资源,包括图片、视频等,这会导致页面加载时间过长,并且占用大量的网络带宽。而 Lazyload 页面可视加载则是根据用户的浏览行为,只加载用户当前可见区域的内容,从而提高页面加载速度和用户体验。 Lazyload 页面可视加载的实现原理是,当页面加载时,只加载用户当前可见区域的内容,而不加载其他区域的内容。当用户滚动页面或者执行其他操作时,才加载相应区域的内容。这样可以大大减少页面需要加载的资源量,加快页面加载速度。 Lazyload 页面可视加载有多种实现方式,常见的方式是使用 JavaScript 监听用户的滚动事件,当用户滚动到某个区域时,将该区域的内容加载进来。可以使用“data-”属性来标记需要延迟加载的内容,然后通过 JavaScript 获取这些标记,并进行加载。另一种方式是使用 Intersection Observer API,该 API 可以监听元素是否进入视窗,从而实现 Lazyload。 Lazyload 页面可视加载的优势主要体现在两个方面。首先,在用户打开网页时,只加载当前可见区域的内容,可以显著提高页面加载速度,让用户更快地看到页面的内容,提升用户体验。其次,Lazyload 可以减少待加载资源的数量,节省网络带宽,降低服务器的负载压力。 总的来说,Lazyload 页面可视加载是一种有效优化网页加载速度的技术,通过只加载用户当前可见区域的内容,可以提升用户体验,减少网络带宽的占用。在实际开发中,可以根据具体情况选择适合的实现方式,以达到最佳的效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值