zoukankan      html  css  js  c++  java
  • 图片懒加载原理

    图片懒加载原理

    一、总结

    一句话总结:

    到达指定加载图片位置时,用data-src的属性值替换img的src的属性值即可,这个时候img就会去请求资源

    imgs[i].src = imgs[i].getAttribute('data-src');

    二、图片懒加载原理

    博客对应课程的视频位置:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>图片懒加载</title>
     8     <style>
     9         img {
    10             display: block;
    11             width: 100%;
    12             height: 300px;
    13             margin-bottom: 20px;
    14         }
    15     </style>
    16 </head>
    17 <body>
    18     <img data-src="./images/1.jpg" alt="">
    19     <img data-src="./images/2.jpg" alt="">
    20     <img data-src="./images/3.jpg" alt="">
    21     <img data-src="./images/4.jpg" alt="">
    22     <img data-src="./images/5.jpg" alt="">
    23     <img data-src="./images/6.jpg" alt="">
    24     <img data-src="./images/7.jpg" alt="">
    25     <img data-src="./images/8.jpg" alt="">
    26     <img data-src="./images/9.jpg" alt="">
    27     <img data-src="./images/10.jpg" alt="">
    28     <img data-src="./images/1.jpg" alt="">
    29     <img data-src="./images/2.jpg" alt="">
    30 </body>
    31 <script>
    32         var imgs = document.querySelectorAll('img');
    33 
    34         //offsetTop是元素与offsetParent的距离,循环获取直到页面顶部
    35         function getTop(e) {
    36             var T = e.offsetTop;
    37             while(e = e.offsetParent) {
    38                 T += e.offsetTop;
    39             }
    40             return T;
    41         }
    42 
    43         function lazyLoad(imgs) {
    44             var H = document.documentElement.clientHeight;//获取可视区域高度
    45             var S = document.documentElement.scrollTop || document.body.scrollTop;
    46             for (var i = 0; i < imgs.length; i++) {
    47                 if (H + S > getTop(imgs[i])) {
    48                     imgs[i].src = imgs[i].getAttribute('data-src');
    49                 }
    50             }
    51         }
    52 
    53         window.onload = window.onscroll = function () { //onscroll()在滚动条滚动的时候触发
    54             lazyLoad(imgs);
    55         }
    56 </script>
    57 </html>
     
  • 相关阅读:
    $().each和$("input[name='XXX']")
    常规JS操作
    日期大小比较JS方法
    集合迭代
    技术点1
    GItHub pages 的使用方法
    node.js是做什么的?
    jQuery基础:下(事件及动画效果)
    jQuery基础:上(样式及DOM操作)
    页码demo制作
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12526921.html
Copyright © 2011-2022 走看看