今天一个前端朋友碰到一个问题,公司的一个相册需求,要求无论图片多大,在加载时都会按自身比例缩放,且在容器中居中。

研究了一下,使用image()对象来预加载图片,再根据图片的长宽比及容器的长宽比便可轻松解决这一问题。具体测试代码如下:

当然也可根据不一样的需求进行调整,使用预加载图片以后就可以轻松应对了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script type="text/javascript">
function re(a,w,h){
    var q = new Image();
        q.src = a.src;

    var e=q.width/q.height,f=w/h;

    a.style.position = 'relative';

    e>f ? (a.height=h,a.style.left=(w-a.width)/2 + 'px') : (a.width=w,a.style.top=(h-a.height)/2 + 'px');
}
</script>
<style type="text/css">
*{margin: 0;padding: 0;border: 0;overflow: hidden;}
.div1{width: 200px;height: 220px;border: 1px solid #ccc;margin: 100px;}
</style>
</head>
<body>
    <div class="div1">
        <img src="http://g.search1.alicdn.com/img/bao/uploaded/i4/i1/TB1NHH4FFXXXXcAXVXXXXXXXXXX_!!0-item_pic.jpg_220x220.jpg" alt="" onload="re(this,200,220)"  />
    </div>
</body>
</html>