我正在尝试创建一个水平菜单,其中包含父div的宽度以及链接以相等距离排列的位置。目标是创建宽度为900px的导航栏。也许有可能以另一种方式实现它?我是css的新手,不知道如何解决我的问题,希望你能帮助我!
#nav {
background:red;
width:900px;
}
ul#nav-bar, ul#nav-bar ul{
margin:0;
list-style:none;
padding:0;
background: white;
border: 1px solid black;
}
ul#nav-bar ul{
display:none;
position:absolute;
left:0;
}
ul#nav-bar li:hover>*{
display:block;
}
ul#nav-bar li{
position:relative;
display:block;
white-space:nowrap;
font-size:0;
float:left;
}
ul#nav-bar li:hover{
z-index:1;
}
ul#nav-bar{
font-size:0;
z-index:999;
position:relative;
display:inline-block;
zoom:1;
padding:0;
*display:inline;
}
* html ul#nav-bar li a{
display:inline-block;
}
ul#nav-bar>li{
margin:0;
}
ul#nav-bar a:active, ul#nav-bar a:focus{
outline-style:none;
}
ul#nav-bar a{
display:block;
vertical-align:middle;
text-align:center;
text-decoration:none;
font: 12px Arial;
color:#000000;
padding:5px 10px 5px 10px;
}
ul#nav-bar ul li{
float:none;
margin:0 0 0;
}
ul#nav-bar ul a{
text-align:left;
background-color:red;
color:#000;
}
ul#nav-bar li:hover>a{
background-color:#fff;
color:#000000;
}
ul#nav-bar span{
display:block;
overflow:visible;
background-position:right center;
background-repeat:no-repeat;
padding-right:0px;
}
<div id="nav">
<ul id="nav-bar">
<li><a href="#">Link1</a></li>
<li><a href="#"><span>Link2</span></a>
<ul>
<li><a href="#">lowerLink1</a></li>
<li><a href="#">lowerLink2</a></li>
<li><a href="#">lowerLink3</a></li>
</ul>
</li>
<li><a href="#">Link3</a></li>
<li><a href="#"><span>longxxxxxxxxxxxxxxxxxxxxxxxxxxxlink</span></a>
<ul>
<li><a href="#">lowerLink1</a></li>
<li><a href="#">lowerLink2</a></li>
<li><a href="#">lowerLink3</a></li>
</ul>
</li>
<li><a href="#">Link5</a></li>
<li><a href="#">Link6</a></li>
<li><a href="#">longxxxxxxxxxxxxxlink</a></li>
</ul>
</div>
谢谢!
答案 0 :(得分:0)
要让#nav-bar与父级匹配,只需将width:100%
添加到css中现有的ul#nav-bar
标记即可。这会告诉您的孩子填写父母,无论孩子的内容如何。
至于传播链接,根据我的经验,最好的方法是在导航栏完成后为文本添加边距。对于您的编码示例,我会将以下内容添加到其中:
ul#nav-bar->li{
margin:0px 20px 0px 20px;
text-align:center;
}
答案 1 :(得分:0)
您可以查看here,这里是css代码
/*zero-height container problem fix for floated elements*/
.clearfix:before,
.clearfix:after {
content:"";
display:table;
}
.clearfix:after {
clear:both;
}
#nav {
background:#999;
width:900px;
}
#nav ul{
list-style: none;
padding: 0;
margin: 0;
}
#nav li{
position: relative;
text-align: center;
padding: 10px 0px;
}
#nav a{
text-decoration: none;
display: block;
color: #f0f0f0;
}
#nav-bar > li{
float: left;
}
#nav-bar ul{
position: absolute;
left: 0;
width: 100%;
top: 100%;
background: #999;
display: none;
}
#nav-bar li:hover{
background: #666;
}
#nav-bar li:hover ul{
display: block;
}
好像你想要在li元素中将宽度调整为文本宽度,所以你需要javascript 这是代码我更新了jsfiddle
$(document).ready(function(){
total_nav_width = $('#nav').width();
main_link = $('#nav-bar > li > a')
textWidths = [];
totalTextWidth = 0;
main_link.each(function(){
textWidths.push($(this).width())
})
for (var i = 0; i < textWidths.length; i++) {
totalTextWidth += textWidths[i];
}
additionValues = (total_nav_width - totalTextWidth)/main_link.length;
main_link).each(function(){
intialWidth = $(this).width()
$(this).width( intialWidth + additionValues )
})
})