水平居中:
1. 行内元素:父元素text-align:center;
2. 确定宽度的块级元素:margin-left/right:auto;
3. 不确定宽度的块级元素:
a. 放在table的td里,table不是块级,但margin-left/right对它有效,table的宽度由它的内容决定。
缺点:增加无语义标签,加深标签的嵌套次数。
b. 将块级元素转化成inline,父元素taCenter
缺点:不能设定长宽
c. 父元素: float:left; position:relative; left:50%;
子元素: position:relative; left:-50%;
据说保留块元素block,不添加无语义标签,不增加嵌套深度
但我不常用,在body下的主div中设置时,时常不好使,用text-align和margin一般就行了。position:relative会带来一定副作用。
竖直居中:
1. 父元素不确定的文本、图片、块级元素的竖直居中
给父容器设置相同的上下边距 padding-top/bottom
2. 父元素高度确定的单行文本的竖直居中
设置父元素line-height=父元素height
(父子元素都加 vertical-align:middle)
3. 父元素高度确定的多行文本、图片、块级元素的竖直居中
a. 又见table,td隐式设置vertical-align:middle,再给td一个height就可以了
b. 对IE8和FF用vertical-align:middle (只对td/th有效)
加display:table-cell实现
对IE6/7用特定格式的hack实现 * _ relative top bottom 类似水平居中3c