一、水平居中设置
1、行内元素
如果是行内元素(如:文本、图片时),水平居中是通过给父元素的样式添加text-align:center;
2、块状元素(此时text-align:center不起作用)
a、定宽块状元素
可通过属性margin:10px auto;来使该元素居中显示,该元素必须得有宽度,否则margin不起作用,二者缺一不可。
b、不定宽块状元素
1)、加入table标签:利用table标签的长度自适应性(即不定义其长度也不默认父元素body的长度,其长度是根据其文本内长度决定),所以可以当做一个定宽快元素,然后利用定宽度块状居中的margin的方法,使其水平居中。
table{margin:10px auto;}
<div>
<table>
<tbody>
<tr><td>
<ul>
<li>我是第一行文本</li>
<li>我是第二行文本</li>
<li>我是第三行文本</li>
</ul>
</td></tr>
</tbody>
</table>
</div>
也可以简单粗暴的将需要居中的块状元素设置display:table,再利用定宽度块状居中的margin的方法,使其水平居中。
ul{display:table; margin:10px auto;}
<div>
<ul>
<li>我是第一行文本</li>
<li>我是第二行文本</li>
<li>我是第三行文本</li>
</ul>
</div>
2)、设置display:inline方法(将元素设为行内元素显示(也称为内联元素:不自动产生换行的元素,如span)),然后使用text-align:center来实现居中。
.container{text-align:center;}
.container ul{list-style:none;margin:0;padding:0;display:inline;}
.container li{margin-right:8px;display:inline;}
<div class="container">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
3)、通过给父元素设置float,然后给父元素设置position:relative和left:50%,子元素设置position:relative和left:-50%来使元素居中。
<body>
<div class="container">
<ul>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</div>
</body>
.container{
float:left;
position:relative;
left:50%
}
.container ul{
list-style:none;
margin:0;
padding:0;
position:relative;
left:-50%;
}
.container li{float:left;display:inline;margin-right:8px;}
二、垂直居中
1、父元素高度确定的单行文本
设置父元素的height和line-height高度一致来实现的。
2、父元素高度确定的多行文本
在chrome、firefox及IE8以上的浏览器下可以设置块级元素的display为table-cell(设置为表格单元显示),将vertical-align属性的值设为middle。