我正在尝试将导航栏放在页面顶部,但导航栏的宽度已自动设置为100%。
这是我的HTML代码:
<body>
<div class="container">
<div class="navBar">
<li><a href="#">List Item #1</a></li>
<li><a href="#">List Item #2</a></li>
<li><a href="#">List Item #3</a></li>
<li><a href="#">List Item #4</a></li>
<li><a href="#">List Item #5</a></li>
</div>
</div>
</body>
这是我的CSS代码:
.container{
width:75%;
height:auto;
margin:0 auto;
}
.navBar{
width:auto;
height:35px;
margin:0 auto;
}
我还有其他方法可以做到这一点,所以“navBar”div会在身体的中心对齐吗?
答案 0 :(得分:1)
首先,您的HTML无效。 li
必须是ul
ul
和div
是块级元素,因此自动100%宽,因此您必须对它们进行收缩包装。
一种方法是使用display:inline-block
。
然后父元素上的text-align:center
将使内容居中。由于您已在navBar
元素上设置了高度,因此我假设您希望在li
上使用相同的内容。
.container {
width: 75%;
height: auto;
margin: 0 auto;
text-align: center;
}
.navBar {
display: inline-block;
height: 35px;
}
.navBar li {
display: inline-block;
list-style-type: none;
}
&#13;
<div class="container">
<ul class="navBar">
<li><a href="#">List Item #1</a>
</li>
<li><a href="#">List Item #2</a>
</li>
<li><a href="#">List Item #3</a>
</li>
<li><a href="#">List Item #4</a>
</li>
<li><a href="#">List Item #5</a>
</li>
</ul>
</div>
&#13;
答案 1 :(得分:0)
我怀疑目前.navBar是display:block意味着它将填充100%的容器。
尝试将.navBar设置为显示:inline-block或float:left
答案 2 :(得分:0)
使用margin:对具有宽度的对象执行auto会使其居中。
你走了:
.container {
width: 75%;
height: auto;
margin: 0 auto;
background-color: red;
}
.navBar {
width: 80%;
margin: 0 auto;
background-color: white;
}
li {
width:18%;
margin:auto;
display: block;
float: left;
text-align:center;
}
&#13;
<body>
<div class="container">
<ul class="navBar">
<li><a href="#">Item #1</a>
</li>
<li><a href="#">Item #2</a>
</li>
<li><a href="#">Item #3</a>
</li>
<li><a href="#">Item #4</a>
</li>
<li><a href="#">Item #5</a>
</li>
</ul>
</div>
</body>
&#13;
答案 3 :(得分:0)
.navBar
必须是ul
而不是div
,因为li
的父级有效标记:)
div
和ul
元素的默认显示为display: block
。 display: block
的元素将是其父元素宽度的100%,使margin: auto
无效。您可以在元素上设置宽度以允许居中,但是如果/当内容更改时,这将会中断
一个简单的解决方法是使用display: table
,因为这样您就可以使用margin: auto
使元素居中,而无需指定宽度,从而使代码更加健壮。
注意:确保从ul
中删除默认填充,否则将无法正确居中。
.container {
width: 75%;
margin: auto;
}
.navBar {
height: 35px;
margin: 0 auto;
display: table;
padding: 0;
}
.navBar li {
display: inline-block;
padding: 0 10px;
list-style: none;
}
&#13;
<body>
<div class="container">
<ul class="navBar">
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
<li><a href="#">Item 5</a></li>
</ul>
</div>
</body>
&#13;