我尝试使用粘性导航栏,因此我为主导航div添加了position:fixed
,并将position:relative
添加到ul li
的子元素中。为什么要给relative
表示我想要左侧有一些空格,所以我给position:relative
left:20%
。
我有一些空格但元素正在流出导航框。
HTML
<nav id="navigation">
<ul>
<li><a href="#">one</a>
</li>
<li><a href="#">two</a>
</li>
<li><a href="#">three</a>
</li>
<li><a href="#">four</a>
</li>
</ul>
</nav>
CSS
#navigation{
position:fixed;
top:0;
width:100%;
height:60px;
left:0;
background-color: black;
}
ul{
position: relative;
list-style: none;
padding:0;
}
ul li {
float: left;
position: relative;
width:20%;
left: 20%;
font-size: 20px;
line-height: 60px;
text-align: center;
border-width: 0 2px 0 0;
border-color:white;
border-style: solid;
}
nav#navigation ul li:last-child{
border: none;
}
nav#navigation ul li:hover{
background-color: grey;
}
nav#navigation ul li a{
text-decoration: none;
color: white;
}
body{
background-color:pink;
}
我认为position:relative
存在问题。任何人都可以解释发生了什么以及可以做些什么。
答案 0 :(得分:2)
请注意,在你的小提琴中line-height: 60px;
导致li
从顶部开始有一个边距......它与position:relative
为了抵消这种影响,我建议你使用margin-top:-20px;
,另外,正如Alien先生所说的那样,清除你的花车
修改强>
如果您移除height
并将line-height
与a
标记对齐,则会解决您的所有问题:
ul li > a {
display:block;
border:1px solid #00F;
line-height: 60px;
}
答案 1 :(得分:1)
您在height:60px;
上使用了line-height
和#navigation
,这阻止height
超过60px
以及line-height
即使您将摆脱height
属性,也会淹没菜单的height
,同时您还需要clear
float
...
目前,我已在overflow: hidden;
元素上添加了ul
,但最好使用自我清晰class
到clear
.clear:after {
clear: both;
display: table;
content: "";
}
在class
元素上使用此ul
,您可以摆脱overflow: hidden;
...
正如您评论的那样,您没有规范化CSS,您需要重置margin
元素的ul
,因此请在margin: 0;
上使用ul
。
此外,请始终使用Normalizing Stylesheets重置浏览器默认CSS,或者只使用
* {
margin: 0;
padding: 0;
}
答案 2 :(得分:0)
删除line-height:60px;
ul li {
float: left;
position: relative;
width:20%;
left: 20%;
font-size: 20px;
text-align: center;
border-width: 0 2px 0 0;
border-color:white;
border-style: solid;
}
答案 3 :(得分:0)
这是你的答案:
ul{
position: relative;
list-style: none;
margin:0 auto;
padding:0;
}
这是需要修复的保证金!