css使用布局元素中,除了float浮动,position设置网页布局是最常见的。当将position的值设置成绝对定位(absolute),该元素已经脱离常规文档流。使用margin: 0 auto;是无法让目标元素居中。
下面附上解决position: absolute;后居中的代码:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8" />
<title>测试</title>
<style type="text/css">
body, div, ul, ol, li, p {
margin: 0;
padding: 0;
}
body {
font: 14px/1.4 "微软雅黑", "黑体";
}
a {
text-decoration: none;
color: #333;
}
ul, ol {
list-style: none;
}
.nav {
width: 980px;
height: 50px;
border: 1px solid #eee;
border-radius: 4px;
background-color: #5CB85C;
position: absolute;
top: 100px;
left: 50%;
width: 980px;
margin-left: -490px;
box-shadow: 0 3px 3px #ccc;
}
.nav li {
float: left;
margin-left: 20px;
line-height: 50px;
padding: 0 20px;
}
.nav li:hover {
background-color: #398439;
}
.nav a {
color: #fff;
letter-spacing: 1px;
}
/*
* css content
*/
.content {
width: 980px;
margin: 0 auto;
height: 900px;
}
</style>
</head>
<body>
<div class="nav">
<ul>
<li><a href="#">志成网络营销中</a></li>
<li><a href="#">首页</a></li>
<li><a href="#">博客</a></li>
</ul>
</div>
<div class="content">
</div>
</body>
</html>
上面代码中,设置目标元素的固定宽度,left为50%;margin-left为目标元素固定宽度的一半。如下所示。
left: 50%; width: 980px; margin-left: -490px;
总结:按照上面3行代码的思路,添加到设置了绝对定位的目标元素中即可水平居中显示。
