来自父 div 的可变宽度的 CSS 水平菜单

标签 css html width alignment navigationbar

我正在尝试创建一个水平菜单,其宽度与父 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>

谢谢!

最佳答案

要使#nav-bar 与父级匹配,只需将width:100% 添加到您现有的css 中的ul#nav-bar 标签中。这告诉您的 child 填写 parent ,无论 child 的内容如何。

至于展开链接,根据我的经验,最好的方法是在导航栏完成后为文本添加页边距。对于您的编码示例,我将添加以下内容以消除它们:

ul#nav-bar->li{
    margin:0px 20px 0px 20px;
    text-align:center;
}

关于来自父 div 的可变宽度的 CSS 水平菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196864/

相关文章:

javascript - 渲染过程中调用的工作人员发来的帖子会去哪儿?

html - 为什么我的 em 值在移动和桌面 View 之间的缩放比例不同?

css - HTML div 宽度 100% 不起作用

css - 暂停 css3 关键帧动画

html - 为响应式设计对齐图像

css - 可清除输入覆盖标签填充

php - PHP表单数据到多个MySQL条目

height - ZingChart 的高度和宽度百分比不起作用

html - 在 div 的中心制作文本

css - 如何使用@font-face 加载谷歌网络字体?