如何使导航栏全宽

时间:2013-01-14 00:01:34

标签: html css

我想让我的导航栏延伸到浏览器的边缘。我可以通过逐像素指定宽度来做到这一点,但是当我使width =“100%”时它不起作用+它在底部显示滚动条.....所以我怎样才能使它延伸到窗口大小的浏览器水平?

以下是 Demo

<html>
<head>

<style type="text/css">


body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}
#nav {
    float: left;
    font: bold 12px Arial, Helvetica, Sans-serif;
    border: 1px solid #121314;
    border-top: 1px solid #2b2e30;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 0px;
    overflow: hidden;
    width:100%;

}

#nav ul {
    margin:0;
    padding:0;
    list-style:none;
}

#nav ul li {
    float:left;
}

#nav ul li a {
    float: left;
    color:#d4d4d4;
    padding: 15px 97px;
    text-decoration:none;
    background:#3C4042;
    background: -webkit-gradient( linear, left bottom, left top, color-stop(0.09, rgb(59,63,65)), color-stop(0.55, rgb(72,76,77)), color-stop(0.78, rgb(75,77,77)) );
    background: -moz-linear-gradient( center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78% );
    background: -o-linear-gradient( center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78% );
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset, 0 0 5px rgba(0, 0, 0, 0.1) inset;
    border-left: 1px solid rgba(255, 255, 255, 0.05);
    border-right: 1px solid rgba(0,0,0,0.2);
    text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.6);
}




#nav ul li a:hover,
#nav ul li:hover > a {
    color: red;
    background:#3C4042;
    background: -webkit-gradient( linear, left bottom, left top, color-stop(0.09, rgb(77,79,79)), color-stop(0.55, rgb(67,70,71)), color-stop(0.78, rgb(69,70,71)) );
    background: -moz-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
    background: -o-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 -1px #000;

}

#nav li ul a:hover, 
#nav ul li li:hover > a  {
color: #2c2c2c;
    background: #5C9ACD;
    background: -webkit-gradient( linear, left bottom, left top, color-stop(0.17, rgb(61,111,177)), color-stop(0.51, rgb(80,136,199)), color-stop(1, rgb(92,154,205)) );
    background: -moz-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% );
    background: -o-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% );
    border-bottom: 1px solid rgba(0,0,0,0.6);
    border-top: 1px solid #7BAED9;
    text-shadow: 0 1px rgba(255, 255, 255, 0.3);
}



 #nav li:hover ul {
    left: auto;
}




#nav li li:hover ul {
    visibility:visible;
}


</style>
</head>
<body>
<div id="nav" > 
<ul > 
<li width="300px" ><a href="#">Home</a></li> 
<li><a href="#">Sell</a> 

<li><a href="#">Services</a> 

<li><a href="#">Contact Us</a></li> 
<li><a href="#">Sign In/Register</a></li> 
</ul> 
</div> 

3 个答案:

答案 0 :(得分:2)

我想你试着用'ul li a'代替'ul li'元素。正如上面提到的那样,给每个li元素20%,使用'box-sizing:border-box'来设置所有内容,然后你准备好了;) 在这里,您可以看到解决方案:http://codepen.io/czaras/pen/Auqtn

答案 1 :(得分:1)

宽度指定内容的宽度。填充和边框大小将添加到指定的宽度。如果您希望包括边框为100%,则必须删除边框。

见下图:

 _______________________
|  margin               |
|  ___________________  |
| |  border           | |
| |  _______________  | |
| | |  padding      | | |
| | |  ___________  | | |
| | | |  content  | | | |
| | | |___________| | | |
| | | |           | | | |
| | | |<- width ->| | | |
| | |_______________| | |
| |___________________| |
|_______________________|

答案 2 :(得分:0)

#nav的宽度为100%,但各个按钮没有占用您想要的空间,因为它们符合文本宽度(width:auto)。获得所需效果的最简单方法(对于任意数量的按钮)是使用宽度为100%的table。更复杂的方法是为每个按钮提供相等的百分比宽度,使得按钮数量增加到100%。您有5个按钮,因此您可以将width:20%;放在#nav ul li上。您还希望消除此样式上的大型97px左右填充,并选择更小的值。

要处理底部的滚动条,请在box-sizing: border-box;上指定#nav