lazyLoading using JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>lazy loading</title>
<style>
img {
display: block;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="images">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
<img src="http://via.placeholder.com/350x150" data-scr="images/test.jpg">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
//使用原生JavaScript实现
var imgs = document.getElementsByTagName('img');
function lazyLoading() {
//获取滚动条偏移量
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
// 获取视口高度
var viewportSize = window.innerHeight || document.documentElement.clientHeight;
for (var i = 0; i < imgs.length; i++){
var x = scrollTop + viewportSize - imgs[i].offsetTop;
if ( x > 0){ //如果图片暴露在视野范围之内
imgs[i].src = imgs[i].getAttribute('data-scr'); //将自定义属性的值赋给src
}
}
}
lazyLoading();
window.addEventListener('scroll', lazyLoading, false);
/*
//使用jQuery实现
$(document).ready(function () {
var lazyLoading = function () {
var scrollTop = $(window).height();
var viewportSize = $(window).scrollTop();
$('img').each(function () {
var x = scrollTop + viewportSize - $(this).position().top;
if (x > 0){
$(this).attr('src', $(this).attr('data-scr'));
}
});
}
window.addEventListener('scroll', lazyLoading, false);
});*/
</script>
</body>
</html>