我有一个#header
div,它是100% width
,在这个div中我有一个无序列表,我已经对这个无序列表应用了margin: 0 auto
,但是它不会在头div中居中。
有人能告诉我为什么吗?我想如果我定义了父div的宽度,那么无序列表应该能够以margin: 0 auto
为中心,我遗漏了什么?
下面是我的代码:
<style>
* {
margin: 0;
padding: 0;
}
#header {
width: 100%;
background-color: #333;
min-height: 160px;
font-family:Arial, Helvetica, sans-serif;
}
#sitename {
font-size: 50px;
width: 620px;
margin:0 auto;
padding-top: 35px;
color:#999;
}
#header ul {
float: right;
margin: 0 auto;
}
#header ul li {
float: left;
padding-right: 20px;
list-style-type: none;
font-size: 20px;
}
</style>
</head>
<body>
<div id="header">
<h1 id="sitename">Photography Auction Site</h1>
<ul>
<li>List of Photos</li>
<li>Image Gallery</li>
<li>Contact Us</li>
</ul>
</div>
</body>
</html>
6条答案
按热度按时间uqdfh47h1#
您需要定义要居中的图元的宽度,而不是父图元的宽度。
hwamh0ep2#
一个inline-block覆盖了整行(从左到右),所以左边距和/或右边距在这里不起作用。你需要的是一个block,一个block在左边和右边都有边框,所以可以受边距的影响。
这就是我的工作原理:
tjvv9vkg3#
为什么不呢?
svujldwt4#
我不知道为什么第一个答案是最好的,我试过了,但实际上不起作用,正如@kalys.osmonov所说,你可以把
text-align:center
赋予header
,但你必须把ul
赋予inline-block
而不是inline
,而且你必须注意到text-align
可以继承,这在某种程度上是不好的,所以更好的方法(在IE 9下不起作用)是使用margin
和transform
。只需从ul
中删除float right
和margin;0 auto
,如下所示:这种方法可以解决在不考虑IE8等标准的情况下,使
ul
的动态宽度居中的问题。pprl5pva5#
我们可以为ul标签设置宽度,然后它将居中对齐。
woobm2wo6#
使用这个CSS来使div在绝对位置居中。这里,用容器的选择器替换
container
。