记得就一句话是这样说的:table能实现的,css一定能实现;css实现的,table未必能实现。水平和垂直的居中,其实不是什么难事,前提是弄懂了各个浏览器的兼容性以及应对这些兼容问题的css hack。

方法一

html


<div class="demo1"><img src="图片路径" alt="" /></div>

css


.demo1 { width:180px ;  height: 180 px ;  line-height: 180 px ;  * font-size: 160 px ;  border: 1 px   solid   #ddd ;  text-align: center ; }

.demo1   img   {   vertical-align: middle ; }

PS:利用行高等于盒子高度实现高级浏览器,IE6/7的hack font-size等于盒子height乘以差不多0.873的数值,参看:​​怿飞:图片垂直居中的使用技巧​​。

方法二

html


< div   class = " demo2 " >< img   src = " 图片路径 "   alt = ""   /></ div >

css


.demo2   {   width: 180 px ;  height: 180 px ;  display: table-cell ;  vertical-align: middle ; * font-size: 160 px ;  border: 1 px   solid   #ddd ;  text-align: center ; }

.demo2   img   {   vertical-align: middle ; }

PS:font-size同上等于盒子height乘以差不多0.873的数值,IE7以上版本及其他高级浏览器均支持display的table-cell。

方法三

html


< div   class = " demo3 " >< div   class = " demo3_inner " >< img   src = " 图片路径 "   alt = ""   /></ div ></ div >

css


.demo3   {   display: table ;  position: relative ;  text-align: center ;  height: 180 px ;  width: 180 px ;  border: 1 px   solid   #ddd ; }

.demo3 _ inner   {   display: table-cell ;  vertical-align: middle ;  position: absolute ;  top: 50 % ;

.demo3 _ inner   img   {   position: relative ;  top: - 50 % ;  left: - 50 % ; }

.demo3  >  .demo3 _ inner   {   position: static ; }

.demo3  >  .demo3 _ inner  >  img   {   position: static ; }

PS:相对定位加绝对定位实现IE6/7,display的table-cell实现高级浏览器。

如果要放文字

html


< div   class = " demo4 " >< div   class = " demo4_inner " >< p > 如果是文本,需要添加一标签来实现,我这里添加的是p。 </ p ></ div ></ div >

css


.demo4   {   display: table ;  position: relative ;  height: 180 px ;  width: 180 px ;  border: 1 px   solid   #ddd ;  text-align: center ; }

.demo4 _ inner   {   display: table-cell ;  vertical-align: middle ;  position: absolute ;  top: 50 % ; }

.demo4 _ inner   p   {   position: relative ;  top: - 50 % ;  left: - 50 % ; }

.demo4  >/ ** /  .demo4 _ inner   {   position: static ; }

.demo4  >/ ** /  .demo4 _ inner  >  p   {   position: static ; }