我用下面的代码实现自适应大小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" />

解决方案 »

  1.   

    <img id="img1"/>
    <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>
    放在容器里面
      

  2.   

    其实图片之所以要自适应大小,是因为图片并不在本站,而是来源于其他网站,放图片的容器固定450X270,而图片有可能是任何大小任何形式,并且不一定会充满容器,在不能充满容器的情况下要求水平、垂直均居中,1楼的情况有可能造成过小的图片拉伸失真或图片高度超过容器高度,2楼的情况由于我并不知道来的图片是什么大小的,因此无法提前设置图片的长宽比例,经过一番查找,我用以下的方式解决了,非常感谢楼上的两位热心高手,希望可以指正小弟的解决方法有何缺陷。<div class="imgdiv"><img onload="this.style.marginTop=((this.parentElement.offsetHeight-this.offsetHeight)/2);this.style.marginLeft=((this.parentElement.offsetWidth-this.offsetWidth)/2);" src="调用外站图片地址" /></div><!--通过计算容器高度/宽度与图片高度/宽度之差除以2决定图片距离容器上方左方的像素值来达到使图片水平/垂直均居中于容器-->
    .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未测试,再次感谢楼上的两位朋友