图片 加载获取宽高问题
我们经常遇到获取图片宽高的问题。有时候我们获取的图片宽高为0.这是因为当我们获取图片宽高时,图片还未加载完成造成的,。
我们可以采用window.onload之后在获取。但是这样我们只有第一次进入页面时才会触发。所以我们采用图片的onload事件;
首先我们需要创建一个img对象
var img = new Image();
img.onload = function () {
console.log(img.width,img.height)
//这里获取就是图片的原始宽高。。
//如果我们想获取图片在dom节点中的宽高需要我们先把img对象加入文档;
// 如 $('div").append(img)
//console.log(img.width,img.height)这里是图片在html中的宽高;
}
img.src = "test.jpeg";
。。
至于为什么
最初的代码如下:
var img = new Image;
img.src = "test.gif";
img.onload = function(){
alert ( img.width );
};
这段代码看着没什么问题,但是为什么onload没有被IE调用呢?因为IE会缓存图片,第2次加载的图片,不是从服务器上传过来的,而是从缓冲区里加载的。是不是从缓冲区里加载的图片就不触发onload事件呢?我于是我测试了以下代码,成功了~
var img = new Image;
img.onload = function(){
alert ( img.width ); };
img.src = "test.gif";
//
//
同时ie有时候会给没有设置图片属性的图片加上图片的原始尺寸。。
通常解决的办法先给img设置 width: auto height:auto;
这种方法;
多张图片的加载与以上原理相似。
var imgArr = ['test1.jpg','test2.jpg','test3.jpg','test4.jpg','test5.jpg','test6.jpg']
var num = 1;
for(var i = 0; i < imgArr.length; i ++) {
var img = new Image();
img.onload = function () {
if(num == imgArr.length) {
alert('图片全部加载完成')
} else {
num ++;
}
}
img.src = imgArr[i];
}
..
posted on 2017-11-09 15:32 哪有不摇摆就开放的花 阅读(155) 评论(0) 编辑 收藏 举报