ul元素在导航栏中出现

时间:2013-12-27 06:18:28

标签: html css css-float

我尝试使用粘性导航栏,因此我为主导航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存在问题。任何人都可以解释发生了什么以及可以做些什么。

JSFIDDLE

4 个答案:

答案 0 :(得分:2)

请注意,在你的小提琴中line-height: 60px;导致li从顶部开始有一个边距......它与position:relative

无关

为了抵消这种影响,我建议你使用margin-top:-20px;,另外,正如Alien先生所说的那样,清除你的花车

demo here

修改

如果您移除height并将line-heighta标记对齐,则会解决您的所有问题:

see here

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 ...

Demo

目前,我已在overflow: hidden;元素上添加了ul,但最好使用自我清晰classclear

.clear:after {
   clear: both;
   display: table;
   content: "";
}

class元素上使用此ul,您可以摆脱overflow: hidden; ...


正如您评论的那样,您没有规范化CSS,您需要重置margin元素的ul,因此请在margin: 0;上使用ul

此外,请始终使用Normalizing Stylesheets重置浏览器默认CSS,或者只使用

* {
   margin: 0;
   padding: 0;
}

Demo 2Demo 3

答案 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;
 }

这是需要修复的保证金!