lazyload.js 1.57 KB
function isInSight(el) {
    var bound = el.getBoundingClientRect();
    var clientHeight = window.innerHeight;
    //只考虑向下滚动加载
    //const clientWidth=window.innerWeight;
    return bound.top <= clientHeight + 100;
}

var index = 0;

function checkImgs() {
    var imgs = document.querySelectorAll('.my-photo');
    for (var i = index; i < imgs.length; i++) {
        if (isInSight(imgs[i])) {
            loadImg(imgs[i]);
            index = i;
        }
    }
}

function loadImg(el) {
    var source = el.getAttribute("data-src");
    el.src = source;
}
// var mustRun = 500
// function throttle(fn, mustRun) {
//     var timer = null;
//     var previous = null;
//     return function() {
//         var now = new Date();
//         var context = this;
//         var args = arguments;
//         if (!previous) {
//             previous = now;
//         }
//         var remaining = now - previous;
//         if (mustRun && remaining >= mustRun) {
//             fn.apply(context, args);
//             previous = now;
//         }
//     }
// }


function throttle(fn) {
    var timer = null;
    var previous = null;
    return function () {
        var now = new Date();
        var context = this;
        var args = arguments;
        if (!previous) {
            previous = now;
        }
        var remaining = now - previous;
        setTimeout(refresh(fn, remaining, context, args, previous, now));
    }
}

function refresh(fn, remaining, context, args, previous, now) {
    if (remaining >= 500) {
        fn.apply(context, args);
        previous = now;
    }
}