zoukankan      html  css  js  c++  java
  • 移动端 延迟加载echo.js的使用

    浏览器支持ie8+
     
    <img src="img/blank.gif" alt="" data-echo="img/album-1.jpg">
     
     
    <script>
    window.echo = (function (window, document) {
     
      'use strict';
     
      /*
       * Constructor function
       */
      var Echo = function (elem) {
        this.elem = elem;
        this.render();
        this.listen();
      };
     
      /*
       * Images for echoing
       */
      var echoStore = [];
       
      /*
       * Element in viewport logic
       */
      var scrolledIntoView = function (element) {
        var coords = element.getBoundingClientRect();
        return ((coords.top >= 0 && coords.left >= 0 && coords.top) <= (window.innerHeight || document.documentElement.clientHeight));
      };
     
      /*
       * Changing src attr logic
       */
      var echoSrc = function (img, callback) {
        img.src = img.getAttribute('data-echo');
        if (callback) {
          callback();
        }
      };
     
      /*
       * Remove loaded item from array
       */
      var removeEcho = function (element, index) {
        if (echoStore.indexOf(element) !== -1) {
          echoStore.splice(index, 1);
        }
      };
     
      /*
       * Echo the images and callbacks
       */
      var echoImages = function () {
        for (var i = 0; i < echoStore.length; i++) {
          var self = echoStore[i];
          if (scrolledIntoView(self)) {
            echoSrc(self, removeEcho(self, i));
          }
    	  
    		  //if (scrolledIntoView(self)) {
    //			echoSrc(self, removeEcho(self, i));
    //			continue;
    //			}
    //			
    //			i++;
    //			}
    //if i == 0 and image echoStore[0] is now in the view, than handler it. After splice(i, 1); the next image u got to check is still echoStore[0], but the next loop check from 1 (i=1).and this cuz the following puzzle that some guys menstioned.
        }
      };
     
      /*
       * Prototypal setup
       */
      Echo.prototype = {
        init : function () {
          echoStore.push(this.elem);
        },
        render : function () {
          if (document.addEventListener) {
            document.addEventListener('DOMContentLoaded', echoImages, false);
          } else {
            window.onload = echoImages;
          }
        },
        listen : function () {
          window.onscroll = echoImages;
        }
      };
     
      /*
       * Initiate the plugin
       */
      var lazyImgs = document.querySelectorAll('img[data-echo]');
      for (var i = 0; i < lazyImgs.length; i++) {
        new Echo(lazyImgs[i]).init();
      }
      
    //  [].forEach.call(document.querySelectorAll('img[data-echo]'), function (img) {
    //  new Echo(img).init();
    //}
     
    })(window, document);
    </script>
     
     
     

    使用的方法

    <script>
    Echo.init({

    offset: 1100,  //距离可视区
    throttle: 50  //延迟时间


      });
    </script>

  • 相关阅读:
    软考下午题具体解释---数据流图设计
    透视表提取不反复记录(4)-每一个物品的最大值
    运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中
    [经验总结]material design效果与开发总结
    cocos2d-x 3.0 回调函数
    P1334 瑞瑞的木板
    P2776 [SDOI2007]小组队列
    P1886 滑动窗口
    P1160 队列安排
    P1823 音乐会的等待
  • 原文地址:https://www.cnblogs.com/surfaces/p/4497361.html
Copyright © 2011-2022 走看看