前言
网上搜了搜图片懒加载,发现很是繁琐,自己研究了一阵子,发现一个data-src就能搞定的事情,没必要像网上说的那么复杂。
一.适用于img标签
1.构建占位符
1 2
| <img class="lazyload" data-src="图片的真实地址" src="loading.gif" alt="">
|
这里data-src是真实地址,src相当于一个加载gif的占位符,src地址需要填写你的加载占位符地址。
2.JS滑动监听
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| window.addEventListener('DOMContentLoaded', function() { var lazyImages = document.querySelectorAll('img[data-src]'); function lazyLoad() { for (var i = 0; i < lazyImages.length; i++) { if (lazyImages[i].getBoundingClientRect().top <= window.innerHeight && lazyImages[i].getAttribute('data-src')) { lazyImages[i].src = lazyImages[i].getAttribute('data-src'); lazyImages[i].removeAttribute('data-src'); } } } window.addEventListener('scroll', lazyLoad); lazyLoad(); });
|
JS代码放进页脚位置。上述代码适用于img标签的,如果你想将这个功能应用到背景图片的懒加载,需要对代码进行一些调整,比如选择带有data-bg属性的元素,并设置其backgroundImage属性
二.适用于background
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF - 8"> <meta name="viewport" content="width=device - width, initial - scale = 1.0"> <title>Document</title> </head>
<body> <a class="media-content" title="标题" href="链接" data-bg="图片真实地址" style='background-image:url("loading.gif");'></a> <script> window.addEventListener('DOMContentLoaded', function () { var lazyBackgrounds = document.querySelectorAll('.media-content[data-bg]'); function lazyLoad() { for (var i = 0; i < lazyBackgrounds.length; i++) { if (lazyBackgrounds[i].getBoundingClientRect().top <= window.innerHeight && lazyBackgrounds[i].getAttribute('data-bg')) { var bgUrl = lazyBackgrounds[i].getAttribute('data-bg'); lazyBackgrounds[i].style.backgroundImage = 'url(' + bgUrl + ')'; lazyBackgrounds[i].removeAttribute('data-bg'); } } } window.addEventListener('scroll', lazyLoad); lazyLoad(); }); </script> </body> </html>
|