懒加载

        <script type="text/javascript">
            // 懒加载
            // getBoundClientRect 的实现方式
            let imgList = [...document.querySelectorAll('img')]
            let num = imgList.length
            let lazyLoad = (function (){
                let count = 0
                return function (){
                    let deleteIndexList = []
                    imgList.forEach((img, index) => {
                        console.log(img)
                        let rect = img.getBoundingClientRect()
                        if(rect.top < window.innerHeight){
                            img.src = img.dataset.src
                            deleteIndexList.push(index)
                            count++
                            if(count === num){
                                document.removeEventListener('scroll', lazyLoad)
                            }
                        }
                    })
                    imgList = imgList.filter((_, index) => !deleteIndexList.includes(index))
                }
            })()
            
            // intersectionObserver 的实现方式
            let imgList = [...document.querySelectorAll('img')]
            let lazyLoad = (function (){
                let observer = new IntersectionObserver(entries => {
                    entries.forEach(entry => {
                        if(entry.intersectionRatio > 0){
                            entry.target.src = entry.target.dataset.src
                            observer.unobserve(entry.target)
                        }
                    })
                })
                imgList.forEach(img => {
                    observer.observe(img)
                })
            })()
        </script>

 

posted @ 2019-09-26 12:19  来亦何哀  阅读(136)  评论(0编辑  收藏  举报