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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> img { display: block; margin: 0 auto; height: 500px; } </style> <body> <div> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%281%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2810%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2811%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2812%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2814%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2818%29.jpg" lazyload="true"> <img src="" data-original="http://p55grr0fu.bkt.clouddn.com/%E6%95%99%E5%B8%88%20%2826%29.jpg" lazyload="true"> </div>
<script> var viewHeight = document.documentElement.clientHeight
function lazyload() { var eles = document.querySelectorAll('img[data-original][lazyload]') console.log(eles[0].getBoundingClientRect()) Array.prototype.forEach.call(eles, function (item, index) { var rect if (item.dataset.original === '') return
rect = item.getBoundingClientRect() console.log(rect.bottom, '--', rect.top, '--', viewHeight) if (rect.bottom >= 0 && rect.top < viewHeight) { +function () { var img = new Image() img.src = item.dataset.original img.onload = function () { item.src = img.src } item.removeAttribute('data-original') item.removeAttribute('lazyload') }() } }) }
lazyload() document.addEventListener('scroll', lazyload) </script> </body> </html>
|