圖片懶加載有幾個重要的點:函數
<img class="pic" alt="加載中" data-src="http://ww1.sinaimg.cn/large/b0b365f5ly1fl8gmghdbsj20qo0bt3zo.jpg">
有幾個重點:性能
viewHeight = window.innerHeight || window.documentElement.clientHeight
getBoundingClientRect 和 clientHeight的關係spa
getBoundingClientRect().top
小於 viewHeight
的時候,給元素的src 賦值ele.src = ele.getAttribute('data-src');
function lazyload() { const viewHeight = window.innerHeight || window.documentElement.clientHeight; let imgs = document.querySelectorAll('.pic'); let num = 0, len = imgs.length; for(let i = num; i < len; i ++) { if(imgs[i].getBoundingClientRect().top < viewHeight) { console.log('i', i); imgs[i].src = imgs[i].getAttribute('data-src'); num += 1 ; } } } window.addEventListener('scroll', lazyload);
固然這樣監聽滾動確定耗費性能,建議加上節流。可參考上一篇文章code