前几天在做腾讯微博的微卖场的时候,遇到需要做图片居中的需求。也就是说,商品列表中的图片需要居中显示。因为图片是卖家自己把商品图片链接过来,商品图片的大小没有做限制和过滤。所以我们需要做的是,让图片在容器当中水平居中、垂直居中、图片自适应容器大小。图片原图大小和在容器中显示的大小有这样的关系:
为了更好地看到效果,先把图片的原图展示出来,以便和它在列表容器当中做对比。
x<=200,y<=200的图片:

x>200,y<=200的图片:

x<=200,y>200的图片:

x>200,y>200,且x=y的图片:

图片自适应居中适用的场景有商品列表、相册、搜索图片结果列表等。如何使用静态的方法实现这样的效果呢?看了网上的一些方法,加上自己的一些说明,做了几个demo,供大家参考。
这种方法适用于小图片,即商品图都比容器小,不需要缩放,加载状态图片可以使用这个方法。这个方法的局限性在于,商品图片需要在服务器端过滤,或者先等比例缩小,再在浏览器端显示。
<div class="wrap_1"><a href=""><img style="background-image:url(100_100.jpg)" src="wrap_loading.png" width="200" height="200"></a></div>
/* 图片的背景图方式 */
.wrap_1 { width:200px; height:200px; border:1px solid red; }
.wrap_1 img { display:block; background-repeat:no-repeat; background-position:center; }
查看demo
在img外设置两层div,最外层div的样式设置为display:table-cell。因为IE6、7中对table-cell不支持,所以针对IE6、7,设置了position来实现居中。在IE8中,如果图片本身的宽比容器的宽大,则容器宽度会被撑开,这里使用针对IE8的width为200px处理。
<div class="wrap_2_outer"><div class="wrap_2_inner"><a href=""><img src="100_100.jpg"
查看demo
设置了空标签的高,使得与它并列的。
<div class="wrap_3"><a href=""><img src="100_100.jpg" }
.wrap_3 i { display:inline-block; width:0; height:100%; overflow:hidden; margin-left:-1px; font-size:0; line-height:0; vertical-align:middle; }
.wrap_3 img { vertical-align:middle; max-height:200px; max-width:200px; }
查看demo
对图片容器设置行高为容器的高。
<div class="wrap_4"> <img src="400_300.jpg"
查看demo
以上实现的效果为:

对于图片的自适应,使用max-width和max-height。冷酷无情的现实就是IE6及以下不支持max-width和max-height。以上用于修复IE6中max-height,max-width的表达式_width和 _height,在运行时还存在小问题。用不同的图片试了一下,对于宽和高至少一个值小于或等于200的图片,能够完美地展示,但是若宽和高两者都大于200,则会出现一些小问题。
若_width和_height两者一起使用,x>200,y>200,且x>y的图片,会显示理想的状态。x>200,y>200,且x<y的图片,会显示为200*200的大小,但是没有按比例缩放:(。

若_width、_height单独使用,则能够使对应的图片显示为理想状态。如仅使用_width,能对横图起作用,对竖图不起作用。

反之,如仅使用_height,能对竖图起作用,对横图不起作用。

结论是,_width和_height都写上,这样做有95%完美了。另外对CSS Expression的性能做优化,猫哥做了详尽的分析供大家参考。针对IE6加上_width: expression(function(el){el.style.width = el.offsetWidth > 200 ? ’200px’ : el.offsetWidth + ‘px’;counter(’2′);}(this));这句。
情非得已
21个Sketch实用高频小技巧2019-02-15
25款值得收藏的优秀网站模板免费下载2015-09-16
20套高质量的免费网页模版PSD素材2013-09-02
20款国外时尚大气的按钮开关PSD素材下载2013-07-31
CSS实例教程:十步学会用CSS建站2011-10-05
网页设计师:浅淡网页BANNER设计2010-09-27
网页细节教程:WEB设计精确点滴2010-09-13
网页设计中的点滴细节把握2010-09-01
总结交互组件创新的四种方式2010-06-28
最全的国外电子商务CSS模板下载2010-06-18
3个方面设计出创意独特的网页设计作品
相关文章3982016-06-11
网页如何自适应不同的分辨率界面
相关文章61622014-04-23
详细解析网页注册转化率的优化处理
相关文章2102014-02-20
详细解析WEB设计中的视觉层次
相关文章2122014-01-17
适应网页设计新趋势:CSS3字体以及图标
相关文章2022013-12-03
游戏页面设计的一些个人思路与见解
相关文章3722013-10-24
详细解析网页重构中页面细节处理心得
相关文章11012013-08-28
三种全屏自适应网页视觉设计心得
相关文章21572013-01-01
