懒加载-js原生

Posted Ashely丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了懒加载-js原生相关的知识,希望对你有一定的参考价值。

window.onload = function(){

        var scrollTop = window.scrollY;
        var imgs = Array.from(document.querySelectorAll(‘img‘));
        lazyLoad();
        // 采用了节流函数
        window.addEventListener(‘scroll‘,throttle(lazyLoad,500,1000));

        function throttle(fun, delay, time) {
            var timeout,
                startTime = new Date();
            return function() {

                var context = this,
                    args = arguments,
                    curTime = new Date();
                clearTimeout(timeout);
                // 如果达到了规定的触发时间间隔,触发 handler
                console.log(curTime - startTime)
                if (curTime - startTime >= time) {
                    fun();
                    startTime = curTime;
                    // 没达到触发间隔,重新设定定时器
                } else {
                    timeout = setTimeout(fun, delay);
                }
            };
        };
        // 实际想绑定在 scroll 事件上的 handler
        // 需要访问到imgs ,  scroll
        function lazyLoad(){
            scrollTop = window.scrollY;
            imgs.forEach((item,index)=>{
                if( scrollTop===0 && item.dataset.src !== ‘‘ && item.offsetTop < window.innerHeight + scrollTop ){
                    // alert()
                    item.setAttribute(‘src‘,item.dataset.src)
                    item.setAttribute(‘data-src‘,‘‘)
                }else if( item.dataset.src !== ‘‘ && item.offsetTop < window.innerHeight + scrollTop && item.offsetTop > scrollTop ){
                    item.setAttribute(‘src‘,item.dataset.src)
                    item.setAttribute(‘data-src‘,‘‘)
                }
            })
        }

    }

 

 

以上是关于懒加载-js原生的主要内容,如果未能解决你的问题,请参考以下文章

懒加载-js原生

原生js实现图片懒加载原理

原生js实现懒加载并节流

原生JS实现图片懒加载之一:Element.getBoundingClientRect()

页面性能优化-原生JS实现图片懒加载

原生javascript代码懒加载