手撕懒加载



    
        
        LazyLoad
        
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        

    
    

//使用IntersectionObserve api
const intersectionObserver = new IntersectionObserver((entries) => {
    entries.forEach((item) => {
        if (item.isIntersecting) {
            item.target.src = item.target.dataset.src;
            // 替换成功后,停止观察该dom
            intersectionObserver.unobserve(item.target);
        }
    })
  }, {
      rootMargin: "150px 0px" // 提前150px进入可视区域时就加载图片,提高用户体验
    });

const imgs = document.querySelectorAll('[data-src]');
imgs.forEach((item) => {
    intersectionObserver.observe(item)
});

搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

你可能感兴趣的:(懒加载,javascript)