jquery实现异步加载图片(懒加载图片一种方式)
更新时间:2017年04月24日 10:45:00 作者:专注前端30年
本篇文章主要介绍了jquery实现异步加载(懒加载图片一种方式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
首先将插件在jq后面引入
(function($) {
// alert($.fn.scrollLoading);
$.fn.scrollLoading = function(options) {
var defaults = {
attr: "data-url"
};
var params = $.extend({}, defaults, options || {});
params.cache = [];
$(this).each(function() {
var node = this.nodeName.toLowerCase(),
url = $(this).attr(params["attr"]);
if(!url) {
return;
}
var data = {
obj: $(this),
tag: node,
url: url
};
params.cache.push(data);
});
var loading = function() {
var st = $(window).scrollTop(),
sth = st + $(window).height();
$.each(params.cache, function(i, data) {
var o = data.obj,
tag = data.tag,
url = data.url;
if(o) {
post = o.position().top;
posb = post + o.height();
if((post > st && post < sth) || (posb > st && posb < sth)) {
if(tag === "img") {
o.attr("src", url);
} else {
o.load(url);
}
data.obj = null;
}
}
});
return false;
};
loading();
$(window).bind("scroll", loading);
};
})(jQuery);
然后在底部初始化
$(document).ready(function () {
//实现图片慢慢浮现出来的效果
$("img").load(function () {
//图片默认隐藏
$(this).hide();
//使用fadeIn特效
$(this).fadeIn("5000");
});
// 异步加载图片,实现逐屏加载图片
$(".scrollLoading").scrollLoading();
});
需要修改img标签为
<img class="scrollLoading" data-url="image/logo.jpg" src="images/load.gif" />
data-url表示将要异步加载的图片,src表示首先加载的图片(一般会是小图片,或者是一个动画,网页中全部的src链接同一个图片,这样网页就加载快好多,这个时候再异步的加载要加载的图片,也就现在要说的功能)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
jquery中的 $("#jb51")与document.getElementById("
以前没注意过,认为jquery 中的 $("#jb51") 与 document.getElementById("jb51") 是一回事,指的是同一个东西。2011-07-07
老生常谈jquery中detach()和remove()的区别
下面小编就为大家带来一篇老生常谈jquery中detach()和remove()的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好的体验!2010-05-05


最新评论