javascript图片自动缩放和垂直居中处理函数


<html>
<head>
<title>Untitled</title>
<style type="text/css">
.testCss{width:200px;height:300px;border:1px red solid;text-align:center;display:block;}
.testCss1{width:300px;height:300px;border:1px red solid;text-align:center;display:block;}
.testCss2{width:400px;height:300px;border:1px red solid;text-align:center;display:block;}
</style>
<script type="text/javascript">
function autoSizeImg(Contents,offsetWidth,offsetHeight,vlmiddle){
var o=Contents.getElementsByTagName("IMG");
var cwidth= window.getComputedStyle?window.getComputedStyle(Contents,null).width:Contents.currentStyle["width"];
var cheight=window.getComputedStyle?window.getComputedStyle(Contents,null).height:Contents.currentStyle["height"];
var ncwidth=parseInt(cwidth);
var ncheight=parseInt(cheight);
for(var i=0;i<o.length;i++){
var img=o[i];
var iw=img.width;
var ih=img.height;
if(img.width>ncwidth){
var nw=ncwidth-offsetWidth;
img.width=nw
img.height=(nw*ih)/iw;
}else if(img.width<ncwidth&&img.height>ncheight){
var nh=ncheight-offsetHeight;
img.height=nh;
img.width=(nh*iw)/ih;
}
if(img.height>ncheight&&img.width<ncwidth){
var hh=ncheight-offsetHeight;
img.height=nh;
img.width=(nh*iw)/ih;
}
if(vlmiddle)img.style.marginTop=((ncheight-img.height)/2)+"px";
}
}
</script>
</head>
<body>
<div class="testCss">
<img src="http://files.phpStudy.net/file_images/sucai/111131524.jpg" onload="autoSizeImg(this.parentNode,5,5,true)"/>
</div>
<div class="testCss1">
<img src="/upload/20081010215957304.jpg" onload="autoSizeImg(this.parentNode,5,5,true)"/>
</div>
<div> </div>
<div class="testCss2">
<img src="/upload/20081010215958874.gif" onload="autoSizeImg(this.parentNode,5,5,true)"/>
</div>
</body>
</html>
注释:

1、后面的testCss1和testCss2两个样式跟testCss是一样的。只是设置了大小。

  2、红色部分的height和width必须定义,是设置存放img外面的父层容器的高和宽。

  3、text-algin:为图片水平居中

  4、display:block,必须设置。否则FF下启用自动缩放不起作用。

  使用方法:

  1、是需要在img的父层定义样式,包含上述注释里面提到的东西;

  2、是img加上

  onload="autoSizeImg(this.parentNode,5,5,true)"

  参数说明:

  参数Contents一般采用this.parentNode,即使img的父容易

  参数offsetWidth,offsetHeight分别是宽和高度居中的修正值。

  参数vlmiddle设置为true则是垂直居中

  运行可以看到效果

<html>
<head>
  <title>Untitled</title>
  <style type="text/css">
    .testCss{width:200px;height:300px;border:1px red solid;text-align:center;display:block;}
    .testCss1{width:300px;height:300px;border:1px red solid;text-align:center;display:block;}
    .testCss2{width:400px;height:300px;border:1px red solid;text-align:center;display:block;}
  </style>
  <script type="text/javascript">
    /*
    函数功用:图片自动缩放和垂直居中处理函数
    编写时间:2008-08-06
    编 写 人:PaulLeder
    联 系 我:paulleder@yeah.net
    */
    function autoSizeImg(Contents,offsetWidth,offsetHeight,vlmiddle){
      var o=Contents.getElementsByTagName("IMG");
      var cwidth=  window.getComputedStyle?window.getComputedStyle
(Contents,null).width:Contents.currentStyle["width"];
      var cheight=window.getComputedStyle?window.getComputedStyle
(Contents,null).height:Contents.currentStyle["height"];
      var ncwidth=parseInt(cwidth);
      var ncheight=parseInt(cheight);
      for(var i=0;i<o.length;i++){
        var img=o[i];
        var iw=img.width;
        var ih=img.height;
        if(img.width>ncwidth){
          var nw=ncwidth-offsetWidth;
          img.width=nw
          img.height=(nw*ih)/iw;
        }else if(img.width<ncwidth&&img.height>ncheight){
          var nh=ncheight-offsetHeight;
          img.height=nh;
          img.width=(nh*iw)/ih;
        }
        if(img.height>ncheight&&img.width<ncwidth){
          var hh=ncheight-offsetHeight;
          img.height=nh;
          img.width=(nh*iw)/ih;
        }
        if(vlmiddle)img.style.marginTop=((ncheight-img.height)/2)+"px";
      }
    }
  </script>
</head>
<body>
  <div class="testCss">
<img src="http://files.phpStudy.net/file_images/sucai/111131524.jpg" onload="autoSizeImg(this.parentNode,5,5,true)"/>
  </div>
  <div class="testCss1">
    <img src="/upload/20081010215957304.jpg" onload="autoSizeImg
(this.parentNode,5,5,true)"/>
  </div>
  <div> </div>
  <div class="testCss2">
    <img src="/upload/20081010215958874.gif" onload="autoSizeImg(this.parentNode,5,5,true)"/>
  </div>
</body>
</html>


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3