居中是写css最常用到的技能。但css中居中却不如table来的简单,并且实现跨浏览器同效果很麻烦。这里总结出各个元素的水平居中代码(IE7、Firefox2、Opera9.5下通过): 最好先有这句声明: <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
这段代码在FF中可以居中,而在IE6/7/8中均不能居中。换成:MARGIN-RIGHT: auto; MARGIN-LEFT: auto;也一样,而且,居右margin:0pt 0pt 0pt auto;的也失效了
而这段代码在FF和IE中都可以居中,两者的区别仅在于开头是否有Doctype声明
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
如果没有这句话,在IE6/7/8中只用margin:0 auto;是无法实现居中的,而在FF中却可以。
如果加了doctype声明,则在一个body下的div,只用margin:0 auto;即可在IE和FF中都实现居中。
之前写的那篇《DIV、UL、li、image水平竖直居中代码大全(for ie firefox opera)》
1、DIV在整个body中水平居中:
#DivComment{
position:absolute;
top: 90%;
left: 45%;
width:40%;
margin:0 0 0 -240px;
padding: 10px 10px 0px 0px;
}
效果见:这里的评论层
2、DIV在另一个DIV中水平居中:
#div1{
TEXT-ALIGN: center;
}
#div2{
MARGIN-RIGHT: auto;
MARGIN-LEFT: auto;
height:200px;
background:#F00;
width:400px;
}
在要居中的div的父级元素(未必是div,可以是ul、li等)中设置TEXT-ALIGN: center;即可实现此div居中,但仅限于IE6&IE7。在此div中加上MARGIN-RIGHT: auto; MARGIN-LEFT: auto;或者margin: 0 auto;即可实现在firefox中也居中。
3、UL居中和li水平居中:其实任何居中,只要是web元素,可加上id属性的都可以使用上面的方法。只是要记住需把ul、li的宽度设置一下才,最好加个背景色才可以看出是否居中。否则ul、li默认是一条撑满div的“楼梯”,是看不出是否居中的。
4、image居中:也可用上述方法,但我发现有时直接用最简单的<div align=center><img src=”xxx.jpg”></div>,维护起来更方便
5、DIV垂直居中
应该再加上一点,就是
“如果有Doctype声明,则完全可以不需要在上一层中使用text-align:center,毕竟这句加了连下级的文字都变居中了。所以DIV最好的居中方法应该是:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
margin:0 auto; ”
调试中还发现,IE的div默认height是有一定的值的,而FF如果没写height参数就默认为0了,就看不出div了,如第二个例子在firefox下是看不出层的,而在IE下可以,在FF下调试,所以若要在ff下调试,应该再加上高度height