部分内容参考w3ctech
预加载
- 设定图片自定义属性放置图片真实的URL,src放置默认打底图片
获取图片元素相对顶部的高度
imageClientTop
,如果滚动高度接近imageClientTop
,则设置图片的src属性为自定义属性的值,在图片onload时去除打底,展示真正的图片在未知预加图片宽高时,要想办法获取图片的真实宽高,有两种方案:支持H5 naturalHeight的和不支持的
支持的
1
2
3
4// 注意,这里也要在img onload状态后才能获取naturalWidth,动态插入直接读该属性可能返回0
var
nWidth = document.getElementById('example').naturalWidth,
nHeight = document.getElementById('example').naturalHeight;不支持的
1
2
3
4
5
6
7
8
9
10function getNatural (el) {
var img = new Image();
img.src = el.src;
return {width: img.width, height: img.height};
}
var
natural = getNatural(document.getElementById('example')),
nWidth = natural.width,
nHeight = natural.height;
- jQuery自定义处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32(function($){
var
props = ['Width', 'Height'],
prop;
while (prop = props.pop()) {
(function (natural, prop) {
$.fn[natural] = (natural in new Image()) ?
function () {
return this[0][natural];
} :
function () {
var
node = this[0],
img,
value;
if (node.tagName.toLowerCase() === 'img') {
img = new Image();
img.src = node.src,
value = img[prop];
}
return value;
};
}('natural' + prop, prop.toLowerCase()));
}
}(jQuery));
// 如何使用:
var
nWidth = $('img#example').naturalWidth(),
nHeight = $('img#example').naturalHeight();
Demo
1 | // 时间戳不读缓存 |