懒加载原理
1、先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储再img标签的自定义属性中(比如data-original)。
当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果。
2、这样做能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>餐饮营销专题</title>
<meta name="keywords" content="餐饮营销专题">
<meta name="description" content="餐饮营销专题">
<style>
*{padding:0;margin:0;}
html,body,.swiper-container,.swiper-wrapper,.swiper-slide{width:100%;}
html{font: 12px/1.5 "Microsoft YaHei","PingFang SC","Helvetica Neue",Helvetica,Arial,sans-serif;}
img{vertical-align: middle;}
a{text-decoration:none;}
.swiper-slide{background-position:50% 50%; position:relative;overflow: hidden;text-align: center;}
.swiper-slide img{width:100%;}
.food-nav-box{width:100%;position:absolute;top:0;left:0;height:80px;border-bottom:1px solid rgba(255,255,255,0.71);}
.food-nav{width:1200px;margin:0 auto;height:40px;padding:20px 0;}
.food-logo{float:left;}
.food-back{float:right;}
.food-box{width:1200px;margin:0 auto;height:80px;position:relative;}
.food-back a{background:rgba(255,255,255,0.16);width:120px;height:40px;border-radius: 30px;border:1px solid #fff;font-size:14px;color:#fff;text-align: center;line-height:40px;display: inline-block;}
.food-footer{width:100%;position:fixed;bottom:0;z-index:999;background-image:url("http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject11.png");height:80px;background-position: center;}
#food-btm-close{position:absolute;top:30px;right:0;cursor: pointer;}
</style>
</head>
<body>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide slide1">
<div class="food-nav-box">
<div class="food-nav">
<div class="food-logo">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/food_logo.png" style="width:329px;" alt="DMLei-一站式新媒体营销平台">
</div>
<div class="food-back">
<a href="/">返回首页</a>
</div>
</div>
</div>
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject1.png" alt="">
</div>
<div class="swiper-slide slide2">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject22.png" alt="">
</div>
<div class="swiper-slide slide3">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject33.png" alt="">
</div>
<div class="swiper-slide slide4">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject44.png" alt="">
</div>
<div class="swiper-slide slide5">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject55.png" alt="">
</div>
<div class="swiper-slide slide6">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject66.png" alt="">
</div>
<div class="swiper-slide slide7">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject77.png" alt="">
</div>
<div class="swiper-slide slide8">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject88.png" alt="">
</div>
<div class="swiper-slide slide9" style="margin-bottom:80px;">
<img src="http://7xnlea.com2.z0.glb.qiniucdn.com/loading_food.png" data-original = "http://7xnlea.com2.z0.glb.qiniucdn.com/foodProject99.png" alt="">
</div>
</div>
</div>
<div class="food-footer">
<div class="food-box">
<img id="food-btm-close" src="http://7xnlea.com2.z0.glb.qiniucdn.com/food-close.png" alt="">
</div>
</div>
<script src="http://7xnlea.com2.z0.glb.qiniucdn.com/jquery.min.js"></script>
</body>
<script>
$("#food-btm-close").click(function(){
$(".food-footer").animate({height:"0px"});
$(".slide10").css('margin-bottom','0');
})
</script>
<script>
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>
</html>
前端ABC