美文网首页
js图片懒加载(滚动到可视区域显示)

js图片懒加载(滚动到可视区域显示)

作者: 小棋子js | 来源:发表于2019-12-17 10:29 被阅读0次
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .container{
                width:400px;
            }
            img{
                width:400px; 
                height:600px;//不能加100%;加指定高度才可以
            }
        </style>
    </head>
    <body>
        <div class="container">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/qrcodes/17913331/QQ%E5%9B%BE%E7%89%8720190517105124.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/320/h/320" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
            <img src="ing.gif" data-src="https://upload.jianshu.io/users/upload_avatars/17913331/962b25d6-e6c8-403f-afca-c1feeeb66c8b?imageMogr2/auto-orient/strip|imageView2/1/w/120/h/120" class="lazy">
        </div>
        <script>
        class LazyLoad{
            constructor(className){
                this.imgList = [...document.querySelectorAll(className)];
                this.judge();
                this.bindEvent();
            }
            // 防抖函数
            debounce(fn,delay){
                let timer = null;
                return function(){
                    if(timer){
                        clearTimeout(timer);
                    }
                    timer = setTimeout(fn,delay);
                }
            }
            // 监听滚动条
            bindEvent(){
                window.addEventListener('scroll',this.debounce(()=>{
                    this.imgList.length && this.judge();                  
                },200))
            }
            // 判断是否在可视范围
            judge(){
                let imgs = this.imgList;
                for(let i = 0;i < imgs.length;i++){
                  if(imgs[i].getBoundingClientRect().top <= window.innerHeight){
                        this.load(imgs[i],i);
                    }
                }
            }
            // 将loading图替换为真实地址,加载图片
            load(el,index){
                let src = el.getAttribute('data-src');
                el.src = src;
                //this.imgList.splice(index,1);
            }
        }
        const lazy = new LazyLoad('.lazy')
        </script>
    </body>
</html>

相关文章

  • js图片懒加载(滚动到可视区域显示)

  • 项目优化

    图片懒加载,数据懒加载, 路由懒加载 1.图片懒加载原理 1.1 开始时 不设置src属性 1.2 图片在可视区域...

  • 网页中有大量图片加载很慢,如何优化?

    图片懒加载 优先加载可视区域的内容,等图片进入了可视区域再加载,从而提高性能。 原理:给图片的img标签中的src...

  • 懒加载和预加载

    图片懒加载 在图片未到达可视区域时,先不请求图片,到达可视区域后再去请求图片,防止页面在初始化时加载大量的图片,影...

  • 首屏加载速度优化——图片懒加载

    什么是懒加载 懒加载其实就是延迟加载,是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片...

  • 图片懒加载 优化页面性能

    什么是懒加载懒加载其实就是延迟加载,是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而...

  • Vue自定义指令实现图片懒加载

    什么是图片懒加载 进入页面的时候,只请求可视区域的图片资源 懒加载原理 图片的标签是 img 标签,图片的来源主要...

  • js实现图片懒加载

    原生js实现图片懒加载需要的条件1、scroll事件2、元素是否处于可视区域 当scroll事件触发的时候,根据计...

  • 图片懒加载

    是什么 图片懒加载其实就是延迟加载,是一种对网页性能优化可方式,比如当访问一个页面的时候,优先显示可视区域的图片而...

  • 图片懒加载

    1为什么要图片懒加载懒加载是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不是一次性...

网友评论

      本文标题:js图片懒加载(滚动到可视区域显示)

      本文链接:https://www.haomeiwen.com/subject/zmqsnctx.html