未知大小图片在已知容器中的垂直和水平居中问题
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>