当前位置 主页 > 网站技术 > 代码类 >

    基于纯JS实现多张图片的懒加载Lazy过程解析(3)

    栏目:代码类 时间:2019-11-08 21:01

    2)utils.js

    // 为了与全局变量冲突,我们使用单例模式
    var utils = {
     // jsonParse: 把JSON格式的字符串转化为JSON格式的对象
     jsonParse: function (str) {
       var val = null;
        try {
         val = JSON.parse(str);
       } catch (e) {
         val = eval('(' + str + ')');
       }
       return val;
     },
     
     getCss2SS : function(curEle, attr) {
       var val = null, reg = null;
       if ('getComputedStyle' in window) {
         val = window.getComputedStyle(curEle, null)[attr];
       } else {
         if (attr === 'opacity') {
           val = curEle.currentStyle[attr]; // ->返回 alpha(opacity=10)
           reg = /^alpha\(opacity=(\d+(?:\.\d+)?)\)$/i; // 获取10这个数字
           val = reg.test(val)?reg.exec(val)[1]/100:1 // 超厉害,test与exec一起使用!!!
         }
         val = curEle.currentStyle[attr];
       }
       reg = /^-?\d+(\.\d+)?(px|pt|rem|em)?$/i; //匹配的情况:纯数值或者带单位的数值
       return reg.test(val) ? parseFloat(val) : val;
     },
     
     offset : function(curEle) {
       var totalLeft = null,
         totalTop = null,
         par = curEle.offsetParent;
       // 首先把自己本身的进行累加
       totalLeft += curEle.offsetLeft;
       totalTop += curEle.offsetTop;
     
       while (par) {
         if (navigator.userAgent.indexOf("MSIE 8.0") === -1) {
           // 累加父级参照物边框
           totalTop += par.clientTop;
           totalLeft += par.clientLeft;
         }
         // 累加父级参照物本身的偏移
         totalTop += par.offsetTop;
         totalLeft += par.offsetLeft;
         par = par.offsetParent;
       }
       console.log('offsetTop: ' + totalTop + ', offsetLeft: ' + totalLeft);
       var result = {};
       result.offsetTop = totalTop;
       result.offsetLeft = totalLeft;
       return result;
     },
     
     win : function(attr, value) {
       if (value === undefined) {
         return document.documentElement[attr] || document.body[attr];
       }
       document.documentElement[attr] = value;
       document.body[attr] = value;
     }
    };

    3、json文件

    [{"img":"./img/new1.PNG", "title": "1网络强国战略与“十三五”十四大战略", "desc": "1互联网是二十世纪人类最大的发明,互联网是二十世纪人类最大的发明"},
     {"img":"./img/new2.PNG", "title": "2网络强国战略与“十三五”十四大战略", "desc": "2互联网是二十世纪人类最大的发明,互联网是二十世纪人类最大的发明"},
     {"img":"./img/new3.PNG", "title": "3网络强国战略与“十三五”十四大战略", "desc": "3互联网是二十世纪人类最大的发明,互联网是二十世纪人类最大的发明"}
    ]

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。