纯JS实现Div内图片自适应大小与居中

作者:拾光时间:2026-10-28 12:30:35浏览:276

本文提供一段纯JavaScript代码,用于在未知图片与Div容器尺寸的情况下,实现图片的自适应缩放与垂直居中。代码通过计算宽高比调整图片大小,确保图片不超出容器且保持比例,同时兼容火狐、谷歌及IE6-8浏览器。

图片自适应与居中原理

该代码旨在解决一个常见的网页布局问题:当Div容器内包含Img元素,且图片原始尺寸与Div容器尺寸均未知时,如何让图片自动适应容器大小。需要注意的是,如果图片原始尺寸小于容器,代码将不进行任何拉伸处理,以避免图像失真。



直接展示实现代码,该方案已经过测试,能够兼容火狐、谷歌以及IE6、IE7和IE8等浏览器。



具体的JavaScript实现代码如下:


JavaScript实现代码

代码如下:

 
<script type="text/javascript" language="javascript">
window.onload=function(){
changeImgSize();
} 
function changeImgSize(){
var getContainer=document.getElementById('imgcontainer');
var getIMG=getContainer.getElementsByTagName('img')[0];
var fw=getContainer.offsetWidth-(2*getContainer.clientLeft);
var fh=getContainer.offsetHeight-(2*getContainer.clientTop);
var iw=getIMG.width;
var ih=getIMG.height;
var m=iw/fw;
var n=ih/fh;
if(m>=1&&n<=1)
{ 
iw=Math.ceil(iw/m);
ih=Math.ceil(ih/m);
getIMG.width=iw;
getIMG.height=ih;
} 
else if(m<=1&&n>=1)
{ 
iw=Math.ceil(iw/n);
ih=Math.ceil(ih/n);
getIMG.width=iw;
getIMG.height=ih;
} 
else if(m>=1&&n>=1)
{ 
getMAX=Math.max(m,n);
iw=Math.ceil(iw/getMAX);
ih=Math.ceil(ih/getMAX);
getIMG.width=iw;
getIMG.height=ih;
} 
if(getIMG.height<fh)
{ 
var getDistance=Math.floor((fh-getIMG.height)/2);
getIMG.style.marginTop=getDistance.toString()+"px";
} 
} 
</script>

对应的HTML结构代码如下:


HTML与CSS结构

代码如下:

 
<div class="sy_pic" id="imgcontainer"><img src="images/444.jpg" /></div>

相关的CSS样式代码如下:


代码如下:

 
.sy_pic{ width:200px; height:300px; border:#000 solid 5px; text-align:center;}

使用时请替换图片路径。如有问题或建议,可加入QQ群:255708401进行交流。

作者最新文章