jQuery图片延迟加载Lazyload代码

admin 发布时间:2015-12-29 分类:Web 阅读:3295次 添加评论

在网站中适时的使用图片延迟加载,可以减少请求,显著的提高多图片页面的加载速度。这也需要适当的使用图片延迟加载,图片延迟加载和无限下拉加载一样,对js支持不太好的搜索引擎都是一个非常坏的功能,虽然大幅度的提高了网站的访问速度,但是搜索引擎也搜索不到了。

jQuery图片延迟加载Lazyload。代码:

<script type="text/javascript">
var _doLazyload = function ($el) {
    var placeholder = $el.attr('placeholder');
    if (!$el.attr('src') && placeholder) $el.attr('src', placeholder);
    var source = $el.attr('data-source');
    var eTop = $el.offset().top; //元素的位置
    var validateDistance = $(window).height();
    var loadMinHeight = $(document).scrollTop() - validateDistance;
    var loadMaxHeight = $(document).scrollTop() + validateDistance;
    if (eTop < loadMinHeight || eTop > loadMaxHeight) return;
    var type = $el.data('type');
    if (type == 'base64') {
        $.ajax({
            url: source,
            success: function (data) {
                _injectImg($el, data);
            },
            isBlock: false
        });
    } else {
        var img = new Image();
        img.src = source;
        if (img.complete) {
            _injectImg($el, source);
            img = null;
        } else {
            img.onload = function () {
                _injectImg($el, source);
                img = null;
            };
        }
    }
};
var _injectImg = function ($el, data) {
    if (!$el.attr('data-source')) return;
    $el.fadeOut(200, function () {
        $el.css('opacity', '0');
        $el[0].onload = function () {
            $el.fadeIn(200, function () {
                $el.css('opacity', '1');
            });
        };
        $el.attr('src', data);
    });
    $el.removeAttr('data-source');
};
function Lazyload() {
    var $el = $("body");
    if ($el.data('source')) {
        _doLazyload($el);
    } else {
        var lazyloads = $el.find('img[data-source]');
        for (var i = 0; i < lazyloads.length; i++) {
            _doLazyload($(lazyloads[i]));
        }
    }
}
</script>

在滚动事件中加入图片延迟加载代码:

$(document).scroll(function() {
  Lazyload();
});

img标签的写法:

<img data-source="http://songker.com/***.jpg" placeholder=""  alt="" />

data-source是图片的实际地址,placeholder是未加载图片时显示的默认地址。有问题欢迎讨论...

关键字词: LazyloadDemojQuerySEO

暂无留言

发表评论:

◎欢迎您的参与讨论。