今天一个前端朋友碰到一个问题,公司的一个相册需求,要求无论图片多大,在加载时都会按自身比例缩放,且在容器中居中。
研究了一下,使用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>
时间: 2024-10-05 23:50:08