我用下面的代码实现自适应大小function picresize(obj,MaxWidth,MaxHeight){
obj.onload=null;
img=new Image();
img.src=obj.src;
if (img.width>MaxWidth && img.height>MaxHeight){
if (img.width/img.height>MaxWidth/MaxHeight) {
obj.height=MaxWidth*img.height/img.width;
obj.width=MaxWidth;
}else {
obj.width=MaxHeight*img.width/img.height;
obj.height=MaxHeight;
}
}else if (img.width>MaxWidth) {
obj.height=MaxWidth*img.height/img.width;
obj.width=MaxWidth;
}else if (img.height>MaxHeight) {
obj.width=MaxHeight*img.width/img.height;
obj.height=MaxHeight;
}else{
obj.width=img.width;
obj.height=img.height;
}
}现在出现一个问题,就是第一次调用页面时自适应大小没问题,但图片有链接,点链接进入别的页面后再点浏览器工具栏上的后退按钮,有些图片可以自适应大小,有些图片就不能自适应大小了,这问题应该如何解决?我已在有图片自适应大小的页面加入:<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache" />
obj.onload=null;
img=new Image();
img.src=obj.src;
if (img.width>MaxWidth && img.height>MaxHeight){
if (img.width/img.height>MaxWidth/MaxHeight) {
obj.height=MaxWidth*img.height/img.width;
obj.width=MaxWidth;
}else {
obj.width=MaxHeight*img.width/img.height;
obj.height=MaxHeight;
}
}else if (img.width>MaxWidth) {
obj.height=MaxWidth*img.height/img.width;
obj.width=MaxWidth;
}else if (img.height>MaxHeight) {
obj.width=MaxHeight*img.width/img.height;
obj.height=MaxHeight;
}else{
obj.width=img.width;
obj.height=img.height;
}
}现在出现一个问题,就是第一次调用页面时自适应大小没问题,但图片有链接,点链接进入别的页面后再点浏览器工具栏上的后退按钮,有些图片可以自适应大小,有些图片就不能自适应大小了,这问题应该如何解决?我已在有图片自适应大小的页面加入:<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache" />
<img id="img2"/>
你可以这样把所有要进行缩放的图片的id或者什么标记放到一个数组中,具体怎么放可以根据图片生成的方式进行决定,也可以在服务器端生成。
生成的格式
var imgArray = ["img1","img2"];
var imgWidth = [200,300];
var imgHeight = [100,100];
然后,把下面的代码放在页面的最后。for(i =0;i<imgArray.length;i++)
{
picresize(document.getElementById(imgArray[i]),imgWidth[i],imgHeight[i]);
}当然,你不生成imgArray也是可以的,你还可以使用document.getElementById("d").getElementsByTagName("img")来做
<div id="d">
<img>
<img>
</div>
放在容器里面
.imgdiv img {max-width:450px;max-height:270px;_width:expression(this.width>450?"450px":this.width);_height:expression(this.height>270?"270px":this.height);}
/*利用max-width和max-height属性来设置图片的最大高度与最大宽度,其他的浏览器均自动完成,由于IE7与FIRFOX均支持以上两个属性,而IE6不支持,因此使用HACK写法利用expression来计算和设置在IE6下时图片的最大高度与最大宽度,IE6未能测试,不保证正确,希望有IE6的朋友帮忙试下*/
以上方法在IE7和Firfox下均测试成功,由于网站使用了<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />,因此IE8未测试,再次感谢楼上的两位朋友