div 内图片垂直居中
1.单行文字
设置div的高度与文字的行高一样就可以了,即 line-height 和 height 的数值是一样的就可以了,最后给div一个 over-flow: hidden ,让超出的部分隐藏.
这种方法支持块级和内联极元素以及所有的浏览器,不过只能显示一行,而且IE中不支持< img >等的居中,之所以要用 overflow: hidden ,是因为当用户放大字体时,字会超出div的范围.
div{
height: 20px;
line-height: 20px;
overflow: hidden;
}
2.多行文字
很简单,只要设定一样的 padding-bottom 和 padding-top 就可以了
div{
padding-top: 20px;
padding-bottom: 20px;
}
这种方法同时支持块级和内联极元素以及非文本内容,包括图片等等,也支持所有浏览器,不足的就是不能固定高度
现在比较好用的就着两种方法了,当然还可以利用浏览器的CSS hack,用得比较少,也没有试过,还不会!
div 内图片垂直居中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css" media="screen">
.img_v {
border:0px;
width:300px;
height:300px;
text-align:center; /*水平居中*/
vertical-align:middle; /*垂直居中,针对FF*/
position:relative; /*相对定位,为下属的p采用绝对定位打好基础*/
display:table-cell; /*把块作为表格单元格,针对FF*/
}
.img_v p {
+position:absolute; /*绝对定位,前面加了+,针对IE*/
top:50%; /*向上偏移图片自身宽度的50%,针对IE*/
}
.img_v img {
+position:relative; /*相对定位,IE*/
top:-50%; /*向下偏移图片自身高度的50%,针对IE,*/
left:-50%; /*向左偏移图片自身宽度的50%,针对IE,*/
}
</style>
</head>
<body>
<div class="img_v"><p><img src="/content/uploadfiles/2009-05/20090530212421734.gif"></p></div>
</body>
</html>