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

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="{CHARSET}">
            <title>图片懒加载测试</title>
            <style type="text/css">
                body {
                      text-align: center;
                     }
                    
                    img {
                      width: 100%;
                      max-width: 300px;
                      height: 200px;
                      margin-bottom: 100px; // 为了方便看效果,将图片尽可能的撑开
                     }
            </style>
        </head>
        <body>
            <div class="img-warpper">
              <img class="lazyload" data-original="https://media3.giphy.com/media/k5GuJn7VslbpGQqHUB/200w.webp">
            </div>
            <div class="img-warpper">
              <img class="lazyload" data-original="https://media1.giphy.com/media/2A7yoKf2B87kotTApZ/200w.webp">
            </div>
            <div class="img-warpper">
              <img class="lazyload" data-original="https://media2.giphy.com/media/3h1rwFW1PpLxD9xLUR/200w.webp">
            </div>
            <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/igHgY3xzYxmRcxwZBs/200w.webp">
            </div>
            <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
                    <div class="img-warpper">
              <img class="lazyload" data-original="https://media0.giphy.com/media/69v5dFsLtzdpaFZz2N/200w.webp">
            </div>
            <script type="text/javascript">
                // 图片懒加载类
                        class LazyLoad {
                          constructor(el) {
                            this.imglist = Array.from(document.querySelectorAll(el)); // 需使用懒加载的图片集合
                            this.init(); // 初始化
                          }
                          // 判断是否该图片是否可以加载
                          canILoad() {
                            let imglist = this.imglist;
                            for (let i = imglist.length; i--;) {
                              // 缩写,相当于if true
                              this.getBound(imglist[i]) && this.loadImage(imglist[i], i);
                            }
                          }
                          // 获取图片与窗口的信息
                          getBound(el) {
                            let bound = el.getBoundingClientRect();
                            let clientHeight = window.innerHeight;
                            console.log('bound', bound)
                            // 图片距离顶部的距离 <= 浏览器可视化的高度,从而推算出是否需要加载
                            return bound.top <= clientHeight - 100; // -100是为了看到效果,您也可以去掉
                          }
                          // 加载图片
                          loadImage(el, index) {
                            // 获取之前设置好的data-original值
                            let src = el.getAttribute('data-original');
                            // 赋值到src,从而请求资源
                            el.src = src;
                            // 避免重复判断,已经确定加载的图片应当从imglist移除
                            this.imglist.splice(index, 1);
                          }
                          // 当浏览器滚动的时候,继续判断
                          bindEvent() {
                            window.addEventListener('scroll', () => {
                              this.imglist.length && this.canILoad();
                            });
                          }
                          // 初始化
                          init() {
                            this.canILoad();
                            this.bindEvent();
                          }
                         }
                        // 实例化对象,参数则是需要使用懒加载的图片类名,s
                        const lazy = new LazyLoad('.lazyload');
    //                    console.log('666', {a:1}.toString().call({}))
            </script>
        </body>
    </html>
  • 相关阅读:
    转:Unity3D的四种坐标系
    在知乎回答的一个问题:C#初学者以后往WP开发走,还是往unity3d走?哪个更有前景呢
    Unity3d 引擎原理详细介绍、Unity3D引擎架构设计
    vs2010打开vs2012的sln文件
    Unity3d不支持vistual studio2012?用vs2012打开unity c#脚本进行编码的方法。
    C#学习笔记15:字符串、文件、目录的操作方法
    C#学习笔记14:面向对象继承的特点和里氏转换
    C#学习笔记13:静态方法、方法重载和ref、out参数
    C#学习笔记12:枚举、结构、数组基础学习
    C#学习笔记11:C#中的顺序结构、分支结构、循环结构
  • 原文地址:https://www.cnblogs.com/sjw-dmwz/p/10614534.html
Copyright © 2011-2022 走看看