jquery.fn.autozoomloadimage = function(scaling, width, height, loadpic) { if (loadpic == null) loadpic = "images/whiteloader.gif"; return this.each(function() { var t = $(this); var src = $(this).attr("src"); var img = new image(); //alert("loading") img.src = src; //自动缩放图片 var autoscaling = function() { if (scaling) { if (img.width > 0 && img.height > 0) { if (img.width / img.height >= width / height) { if (img.width > width) { t.width(width); t.height((img.height * width) / img.width); //图片x>y 并且大于框的x 横向图 var top =math.abs((height-t.height())/2); var left =math.abs((width-t.width())/2); t.css("top",top) t.css("left",left) //alert("1") } else { t.width(img.width); t.height(img.height); //图片x等于框x;且图片y<框y var top =(height-img.height)/2 var left =(width-img.width)/2 t.css("top",top) t.css("left",left) //alert("2") } } else { if (img.height > height) { t.height(height); t.width(img.width * height / img.height); //图片y>x 并且大于框的y 竖向图 var left =(width-img.width * height / img.height)/2 t.css("left",left) //alert("3") } else { t.width(img.width); t.height(img.height); //图片x、y都比规定的框小 var top =(height-img.height)/2 var left =(width-img.width)/2 t.css("top",top) t.css("left",left) //alert("4") } } } } } //处理ff下会自动读取缓存图片 if (img.complete) { //alert("gettocache!"); autoscaling(); return; } $(this).attr("src", ""); var loading = $("\"加载中\""); t.hide(); t.after(loading); $(img).load(function() { autoscaling(); loading.remove(); t.attr("src", this.src); t.show(); //alert("finally!") }); }); }