如何将下拉链接添加到现有的响应式导航菜单

时间:2019-05-18 23:06:51

标签: html css navigation dropdown

我有一个现有的响应式导航菜单,想要添加一个子菜单(实际上,它只是顶部菜单项之一下的一个链接)。听起来应该很简单,但我无法弄清楚。添加链接后,链接要么终止于最上面一项的下面(使整个导航栏随其一起变小),要么显示“无”使其消失而不再停留在悬停状态。有没有一种简单的方法可以仅使用CSS做到这一点?我希望我的问题很清楚。我将包括必要的代码。如果您给我代码,请告诉我该放在哪里。我是新手。非常感谢您的帮助。

HTML:

<nav><a href="index.html">
      <div id="logo"><img src="images/logo-text.png" alt="CBS Stuctures, Inc."></div>
      </a>
      <label for="drop" class="toggle">MENU</label>
      <input type="checkbox" id="drop" />
      <ul class="menu">
        <li><a href="index.html">HOME</a></li>
        <li><a href="completed.html">COMPLETED PROJECTS</a></li>
        <li><a href="structures.html">STRUCTURES</a>
          <ul>
            <li><a href="video-presentation.html">Video Presentation</a></li>
          </ul>
        </li>
        <li><a href="new-products.html">NEW PRODUCTS</a></li>
        <li><a href="contact.php">CONTACT</a></li>
      </ul>
    </nav>


CSS:

nav {
    height: auto;
    margin: 0;
    padding: 0;
    background-color: #000;
}
#logo {
    display: block;
    float: left;
    padding: 0;
}
nav:after {
    content: "";
    display: table;
    clear: both;
}
nav ul {
    display: inline-block;
    font-size: 1.5em;
    list-style: none;
    float: right;
}
nav ul li {
    display: inline-block;
    float: left;
}
nav a {
    display: block;
    padding: 10px 20px;
    color: #fff;
    text-decoration: none;
}
.toggle, [id=drop] {
    display: none;
}
nav a:hover {
    color: #70E4FC;
}
nav ul li ul{
    display: none;
}
nav ul li ul:hover{
    display: block;
}

@media (max-width: 1024px) {
#logo {
    display: block;
    width: 100%;
    text-align: center;
    float: none;
    padding: 0;
}
    nav ul{
        width: 100%;
        padding:0;
        margin:0;
        float: none;
        background-color: rgba(16,70,56,1.00);
    }
  nav ul li {
    width: 100%;
      box-sizing: border-box;
      padding: 10px;
     background-color:rgba(11,51,41,1.00);
}
    nav ul li:hover{
          background-color:#0F4739;
        }
    .toggle + a, .menu{
        display: none;
    }
    .toggle{
        display:block;
        background-color: #333333;
        padding: 14px;
        font-size: 1.5em;
        cursor: pointer;  
    }
    .toggle:hover {
        background-color:#515151;
    }
    [id^=drop]:checked + ul{
        display: block;
    }
    }

Without hover

With hover

1 个答案:

答案 0 :(得分:0)

您只需在父母的 hover selector 中的 child ul 上添加 li ,< strong> ul

ul li:hover ul {display: block;}  

要将其应用于特定元素,必须向您的孩子ul添加 class

ul li:hover ul.childul {display: block;}  

查看工作示例here