html - 当子导航下降时,如何防止链接向下移动?

标签 html css

我试图用 HTML 和 CSS 创建一个下拉导航栏,但我遇到了问题。起初,我无法让子菜单与它们下拉按钮的宽度相同,所以我将它们设置为 width:100% 并将无序列表设置为 position: relative。那行得通,但是现在当子菜单下拉时,栏中的所有链接也会下拉。我不确定我的解释是否正确,但这是 fiddle https://jsfiddle.net/WW3bh/21605/ (将鼠标悬停在 Chapter 或 Tech Ed 上以查看问题)每当我解决一个问题时,另一个都会返回。我错过了什么?

HTML:

<body>
<div id="wrapper">
<div id="headercont">

<div id="navmain">
    <ul>
        <li class="link_nav"> <a class="title_nav" href="">Home</a></li>
        <li class="link_nav"> <span class="title_nav">Chapter</span> 
            <ul class="sub">
                <li> <a href="">About</a></li>
                <li> <a href="">Officers</a></li>
                <li> <a href="">Advisor</a></li>
                <li> <a href="">News</a></li>
            </ul> </li>
        <li class="link_nav"> <span class="title_nav">Tech Ed</span>
            <ul class="sub">
                <li> <a href="">Classes</a></li>
                <li> <a href="">Teachers</a></li>
            </ul> </li>
        <li class="link_nav"> <a href="">Design Brief</a></li>
        <li class="link_nav"> <a href="">About</a></li>
    </ul>      
</div>
</div>
</div>
</body>

CSS:

#wrapper {
    width: 900px;
    margin-left: auto;
    margin-right: auto;
    min-height: 100%;
    position: relative;
}

#header #mainnav ul {
    margin: 0;
    padding: 0;
    list-style-type: none;
}
#mainnav ul .nav_link {
    float: right;
    width: 10%;
    list-style-type: none;
}
#wrapper #mainnav {
    color: #2B3A42;
}
#wrapper #headercont {
    display: inline-block;
    margin-left: auto;
    margin-right: auto;
    float: left;
}
#navmain ul .link_nav {
    list-style-type: none;
    display: inline-block;
}
#wrapper #headercont #navmain {
    height: 30px;
    width: 900px;
    background-color: #151C23;
    margin-left: auto;
    margin-right: auto;
    display: inline-block;
    float: left;
    margin-top: auto;
    margin-bottom: auto;
}
#headercont #navmain ul {
    padding: 0;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    margin-top: 0px;
}
ul .link_nav a {
    text-decoration: none;
    color: #D9E5E8;
    font-size: 22px;
    padding-left: 30px;
    padding-right: 30px;
}
.title_nav {
    text-decoration: none;
    color: #D9E5E8;
    font-size: 22px;
    padding-left: 40px;
    padding-right: 40px;
    width: 100px;
    position: relative;
}

.sub {
    display: none;
    list-style-type: none;
    position: relative;
}

ul .link_nav:hover {
    background-color: #D9E5E8;
}

ul .link_nav:hover .title_nav {
    color: #151C23;
} 

ul .link_nav:hover .sub{
    display: block;
    background-color: #5C6E90; 
}

.sub li:hover {
    background-color: #D9E5E8;
}

.sub li:hover a{
        color: #151C23;
}

.sub li {
    width: 100%;
}

最佳答案

你快到了。

制作.sub下拉列表 position:absolute;它会停止移动所有东西。添加并使用 top:0;left:0px .sub 上的值此外,这将相对于父级定位它 <li>并提供您正在寻找的下拉效果。

https://jsfiddle.net/JohnDevelops/WW3bh/21609/

^ 我添加了 position:relative;给家长<li>position:absolute;top:20px;left:0;到下拉菜单 <ul> .

关于html - 当子导航下降时,如何防止链接向下移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145679/

相关文章:

javascript - 使用不同的企业 ID 时,trustpilot 轮播不工作

javascript - Windows 应用商店应用程序或 HTML5 拖放是否支持触摸设备?

javascript - 如何通过 jquery 将 div 转换到特定位置

css - chrome中的jquery css问题

页脚变为页眉的 jQuery css 视差效果

html - 3 Column Layout-尝试在css框架之前掌握纯布局

javascript - 允许值 -9999 到 9999 的文本框

html - 媒体查询无效

angularjs - :first-child with ng-repeat

html - <tfoot> 可以放在 table 的底部吗?