未知大小图片在已知容器中的垂直和水平居中问题

CSS布局中,未知大小图片的垂直居中,一直是比较头疼的问题,标准浏览器只要设定容器的line-height和图片的vertical-align:middle;就可以了,但对IE没用,几个月前在国外网站看到了一则对IE的解决方法,感觉不是很理想,也没当回事。最近看到经常有朋友在问类似的问题,又把代码翻了出来,针对IE改了下。

CSS

	.box{
height:140px;
width:200px;
border: solid 1px #666;
text-align:center;/*水平居中*/
line-height:140px;
font-size:126px;/*IE靠这垂直居中*/
}
.box[class]{
font-size:12px;/*标准浏览器需要这个数值*/
}
img{
vertical-align:middle;/*标准浏览器图片垂直居中*/
}

原先老外代码的font-size是和高度相同,试下来容器的高度要比标准浏览器高一截,多次尝试将字体尺寸大小减去了百分之十容器的高度,这样一来,看起来差不多。至于什么原因还不清楚.

在IE5.5、IE6.0、FF1.5、Opera9.0下测试成功,对IE5.0和IE7.0无效.

效果演示

老外的演示页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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>iBloom Studios | Applied CSS Vertical-Align</title>
<style type="text/css" media="screen">
 div{
  height:200px;
  width:200px;
  background:blue;
  text-align:center;
  line-height:200px;
  font-size:200px
 }
 *>div{
  font-size:12px
 }
 img{
  vertical-align:middle;
 }
 a.container{
  display:block;
  text-align:center;
  height:300px;
  width:200px;
  line-height:300px;
  font-size:300px;
  background:tomato
 }
 *>a.container{
  font-size:12px
 }
 /* Layout styles */
 h1{
  font:bold 18px Verdana, Arial, Helvetica, sans-serif
 }
 p{
  font:12px Verdana, Arial, Helvetica, sans-serif
 }
 .container{
  margin:0 0 20px
 }
 pre{
  float:right;
  font:12px "Courier New", Courier, monospace;
  border:1px solid #ccc;
  padding:5px
 }
</style>
</head>
<body>
<h1>Applied CSS Vertical-Align</h1>
<pre>
div{
 height:200px;
 width:200px;
 background:blue;
 text-align:center;
 line-height:200px;
 font-size:200px
}
*>div{
 font-size:12px
}
img{
 vertical-align:middle;
}
</pre>
<div class="container"><img src="/images/demoBoxH.gif" alt="" /></div>
<div class="container"><img src="/images/demoBoxV.gif" alt="" /></div>
<pre>
a.container{
 display:block;
 text-align:center;
 height:300px;
 width:200px;
 line-height:300px;
 font-size:300px;
 background:tomato
}
*>a.container{
 font-size:12px
}
img{
 vertical-align:middle;
}
</pre>
<a class="container" href="#"><img src="/images/demoBoxH.gif" alt="" /></a>
<a class="container" href="#"><img src="/images/demoBoxV.gif" alt="" /></a>
<p>You can return to the original <a href="/article9/">"Applied CSS Vertical-Align" article</a> or to the <a href="/">iBloom Studios homepage</a>
</body>
</html>

posted @ 2006-09-20 15:31  海潮的博客  阅读(417)  评论(2编辑  收藏  举报