美文网首页
图片懒加载

图片懒加载

作者: 一二三kkxx | 来源:发表于2018-02-06 16:54 被阅读15次

1.原理

当页面图片比较多的时候,加载速度会比较慢,所以为了增加页面加载速度,先将可视区域内的图片加载,其他区域的图片暂不加载,等到滚动到可视区域内,再去加载图片,会缓解一部分服务器的压力,提升性能.

2.实现步骤

  • 将页面中的img标签的src指向占位图片(小图片),然后自定义data-src属性,指向真实引入的图片.
    <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
    
  • 先将可视区域内的图片的src替换成data-src内的值
        var img= document.getElementsByTagName('img'),
              len = img.length,
              n = 0;
        function lazypic(){
            var visibleHeight = document.documentElement.clientHeight,
                  scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            for(let i = n;i<len;i++){
                if(img[i].offsetTop < visibleHeight + scrollTop){
                    if(img[i].getAttribute('src') == 'placeholder.png'){
                        img[i].src = img[i].getAttribute('data-src')
                    }
                    n =  i + 1
                }
            }
        }
    
  • 然后监听滚动事件,把即将出现在可视区域内的图片加载出来.
        window.onscroll = lazypic;
    

3.代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
    <style>
          img {
              display: block;
              margin-bottom: 50px;
          }
    </style>
    </head>
    <body>
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/wmdemo/photo/201707/20170727_CC1C74F71145C7D4FBEA447FE89DDD7C.jpg">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201801/20180129_CA90F1C619019CE324AAE33479EEBA58.png" alt="">
      <img src="placeholder.png" data-src="https://img01.jhcms.com/demo/photo/201711/20171103_B328846ADC0A115B3C450F4C76160572.png" alt=""> 
  </body>
  <script>
     var img= document.getElementsByTagName('img'),
          len = img.length,
          n = 0;
     lazypic();
     window.onscroll = lazypic;
     function lazypic(){
        var visibleHeight = document.documentElement.clientHeight,
              scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        for(let i = n;i<len;i++){
            if(img[i].offsetTop < visibleHeight + scrollTop){
                if(img[i].getAttribute('src') == 'placeholder.png'){
                    img[i].src = img[i].getAttribute('data-src')
                }
                n =  i + 1
            }
        }
    }
  </script>
  </html>

相关文章

  • 项目优化

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

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • 图片懒加载

    图片懒加载 图片懒加载在一些图片密集型的网站中运用比较多,通过图片懒加载可以让一些不可视的图片不去加载,避免一次性...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 图片懒加载和预加载

    图片懒加载的原理是什么? 首先明白为什么要懒加载: 懒加载即延迟,对于图片过多的页面,为了加快页面加载速度,我们需...

  • selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • jquery懒加载、回到顶部

    1.知识点部分: 懒加载图片的原理是什么? 图片懒加载也称为曝光加载,将页面上的图片分批加载,只有当图片出现在wi...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

网友评论

      本文标题:图片懒加载

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