使用CSS实现图片垂直居中,本文提供三种方法实现CSS图片居中,其中第一种加一个标签的方法是我推荐的,代码简洁,兼容性比较好,其他的hack可能会存在问题,不建议使用。如果你对图片实现居中有更好的方法,也请告知我们。

详情请参考之前写过的一篇文章:CSS多行文字垂直居中的两种方法。

HTML代码:

<div class="middle-box">
<img src="web.png"/>
<i class="visible"></i>
</div>

CSS代码:

.middle-box{height:300px; border: 1px solid #f00; width: 400px; margin: 0 auto; text-align: center; }
.middle-box img{vertical-align: middle; }
.visible{height: 100%; vertical-align: middle; width: 0; display: inline-block;}

目前我觉得这种方法是最简洁的。

演示

当然你也可以看一下上面这篇文章的另外一种方法。

网上还有许多:大小不固定的图片、多行文字的水平垂直居中

1.使用display:table-cell加文字

HTML部分(仅示例一张图片,其他重复,故略):

<ul class="zxx_align_box_4 fix"> <li> <div><img src="web1.png" /></div> </li> </ul>

css部分:

.zxx_align_box_4 li{float:left; margin-right:13px;}
.zxx_align_box_4 li div{display:table-cell; width:144px; height:144px; border:1px solid #beceeb; font-size:118px; text-align:center; vertical-align:middle;} 
.zxx_align_box_4 li div img{vertical-align:middle;}

注意:高度:文字大小=1.14,这个比例我一直记着,但是后来我将这个比例的概念淡化了,原因在于多次遇到其他比例实现效果的情况。例如上面,就是1:1实现的。

2.display:inline-block加文字居中的,只适用于多图垂直居中对齐的情况。

HTML部分(仅示例两张图片,其他重复,故略):

<div class="zxx_align_box_5 fix"> 
<a href="#"> <img src="mm1.jpg" /> </a> 
<a href="#"> <img src="mm2.jpg" /> </a> 
</div>

css部分:

.zxx_align_box_5 a{display:inline-block; width:1.2em; font-size:128px; text-align:center; vertical-align:middle;}
.zxx_align_box_5 a img{vertical-align:middle; padding:2px; border:1px solid #beceeb;}

不知道这个文字比例是怎么算的,感觉用我上面的第一种方法比较靠谱,虽然多了一个标签,但还是可以接受的。