-
一、图片预加载的3个步骤
1、实例化一个Image对象。
2、监听它的load、error事件。
3、为src附上正确的图片路径。
查看全部 -
(function($) {
// 面向对象
function PreLoad(imgs, options) {
this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;
this.opts = $.extend({}, PreLoad.DEFAULTS, options); // options和PreLoad.DEFAULTS这2个对象融合,生成新的对象,将新对象返回给opts保存下来。
if (this.opts.order === 'ordered') {
this._ordered();
} else {
this._unordered(); // _表示只在函数内部使用,而不在外部调用
}
}
PreLoad.DEFAULTS = {
order: 'unordered', // 无序预加载
each: null, // 每一张图片加载完毕后执行
all: null // 所有图片加载完毕后执行
};
PreLoad.prototype._ordered = function() { //方法写在原型链上
var opts = this.opts, // 保存为局部变量
imgs = this.imgs,
len = imgs.length,
count = 0;
var imgObj = new Image();
load();
function load() {
$(imgObj).on('load error', function() {
opts.each && opts.each(count);
if (count >=len) {
// 所有图片已经加载完毕
opts.all && opts.all();
} else {
load();
}
count++;
});
imgObj.src = imgs[count];
}
},
PreLoad.prototype._unordered = function () {
var imgs = this.imgs,
opts = this.opts,
count = 0,
len = imgs.length;
$.each(imgs, function(i, src) {
if (typeof src != 'string') return;
var imgObj = new Image();
$(imgObj).on('load error', function() {
opts.each && opts.each(count); // 如果opts.each存在,执行opts.each方法
if (count >= len - 1) {
opts.all && opts.all();
}
count ++;
});
imgObj.src = src;
});
};
// 插件:①附在$.fn上(要选择一个元素);②直接跟在jquery对象,是一个工具函数。(工具方法)
// $.fn.extend -> $('#img').preload();
$.extend({
preload: function(imgs, opts) {
new PreLoad(imgs, opts);
}
});
})(jQuery);
查看全部 -
一、禁止事件冒泡:e.stopPropagation
1、$btn.on('click',function(){e.stopPropagation});
btn点击事件冒泡到document,在点击btn的时候会触发document的隐藏事件,所以要阻止btn的事件冒泡,是处理btn,而不是document.
查看全部 -
一、li*75>img[src="imags/qq/$.jpg"],按了tab之后,$的地方会从1到75开始计数。
db:display:block;
查看全部 -
一、插件写在局部作用域中,就是为了使它和外部的内容互不干涉,互不影响。但是js是没有局部作用域的,我们一般用闭包模拟局部作用域。
(function($) {
// 面向对象
function PreLoad(imgs, options) {
this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;
this.opts = $.extend({}, PreLoad.DEFAULTS,options); // options和PreLoad.DEFAULTS这2个对象融合,生成新的对象,将新对象返回给opts保存下来。
this._unordered(); // _表示只在函数内部使用,而不在外部调用
}
PreLoad.DEFAULTS = {
each: null, // 每一张图片加载完毕后执行
all: null // 所有图片加载完毕后执行
};
PreLoad.prototype._unordered = function () {
var imgs = this.imgs,
opts = this.opts,
count = 0,
len = imgs.length;
$.each(imgs, function(i, src) {
if (typeof src != 'string') return;
var imgObj = new Image();
$(imgObj).on('load error', function() {
opts.each && opts.each(count); // 如果opts.each存在,执行opts.each方法
if (count >= len - 1) {
opts.all && opts.all();
}
count ++;
});
imgObj.src = src;
});
}
// 插件:①附在$.fn上(要选择一个元素);②直接跟在jquery对象,是一个工具函数。(工具方法)
// $.fn.extend -> $('#img').preload();
$.extend({
preload: function(imgs, opts) {
new PreLoad(imgs, opts);
}
});
})(jQuery);
查看全部 -
Math.max(a, b) //返回最大值 Math.min(a, b) // 返回最小值
查看全部 -
一、Image对象有2个事件:load, error。
var imgObj = new Image(); // new实例化image对象。
$(imgObj).on('load error', function() {});
图片正常被加载之后,会触发load事件,如果没有被正常加载,会触发error事件。
查看全部 -
一、Math.max(0, --index),表示先index-1,再与0进行比较,取较大的那个值。
对应的有Math.min()方法。eg:Math.min(0, 1, 3, 5),得到的是0。
查看全部 -
一、css简写
(1)tac意为 text-align:center;
(2)dib意为 display:inline-block;
(3)mt300意为 margin-top:300;
查看全部 -
一、图片的预加载效果:预知用户将发生的行为,提前加载用户所需的图片
二、图片预加载效果展示
1、网站的loading页
2、局部图片的加载-表情插件
3、漫画网站
三、图片预加载的特点
1、提前加载所需图片
2、更好的用户体验
四、图片预加载:有序加载、无序加载。
查看全部 -
有序无序预加载整合
查看全部 -
预加载改成插件
查看全部 -
index = math.max(0,--index);查看全部
-
'prev' === $(this).data('control'),这种写法有效的规避判断条件写错的问题!查看全部
-
emmet语法查看全部
举报