等宽导航栏链接(带下拉菜单)

时间:2020-03-03 22:42:36

标签: css nav

我想将“帮助”链接转换为悬停时的下拉菜单。我是否必须将其转换为无序列表,还是可以使用现有结构?提前致谢。

 <div class="navbar-project">
   <a href="#">Details</a> 
   <a href="#">Forms</a> 
   <a href="#">Documents</a> 
   <a href="#">Help</a> 
 </div>

CSS

 .navbar-project {
   width: 100%;
   background-color: #fff;
   overflow: auto;
   margin-top: 25px;
   margin-bottom: 25px;
 }

 .navbar-project a {
   float: left;
   padding: 12px;
   color: #000;
   text-decoration: none;
   font-size: 20px;
   width: 25%; /* Four links of equal widths */
   text-align: center;
   border-bottom: 3px solid white;
 }

 .navbar-project a:hover {
   border-bottom: 3px solid black;
 }

 .navbar-project a.active {
   background-color: #fff;
   border-bottom: 3px solid red;
 }

 @media screen and (max-width: 500px) {
   .navbar-project a {
     float: none;
     display: block;
     width: 100%;
     text-align: left;
   }
 }

2 个答案:

答案 0 :(得分:0)

处理下拉列表的最佳方法是将其放入ul中,您可以在现有代码中采用以下代码

<nav role="navigation">
  <ul>
    <li><a href="#">Button One</a></li>
    <li><a href="#">Button Two</a>
      <ul class="dropdown">
        <li><a href="#">Submenu-1</a></li>
        <li><a href="#">Submenu-2</a></li>
        <li><a href="#">Submenu-3</a></li>
      </ul>
    </li>
    <li><a href="#">Button Three</a></li>
  </ul>
</nav>

和您的CSS

li {
 display: block;
 transition-duration: 0.5s;
}

li:hover {
  cursor: pointer;
}

ul li ul {
  visibility: hidden;
  opacity: 0;
  position: absolute;
  transition: all 0.5s ease;
  margin-top: 1rem;
  left: 0;
  display: none;
}

ul li:hover > ul,
ul li ul:hover {
  visibility: visible;
  opacity: 1;
  display: block;
}

ul li ul li {
  clear: both;
  width: 100%;
}

答案 1 :(得分:0)

您只需要打开ul中的“帮助”项,创建li项,然后使用display: none;将其隐藏即可,之后您可以在其中使用hover ul,并指定您希望使用li显示display: block;项。

.navbar-project {
   width: 100%;
   background-color: #fff;
   overflow: auto;
   margin-top: 25px;
   margin-bottom: 25px;
 }

 .navbar-project a {
   float: left;
   padding: 12px;
   color: #000;
   text-decoration: none;
   font-size: 20px;
   width: 25%; /* Four links of equal widths */
   text-align: center;
   border-bottom: 3px solid white;
 }

 .navbar-project a:hover {
   border-bottom: 3px solid black;
 }

 .navbar-project a.active {
   background-color: #fff;
   border-bottom: 3px solid red;
 }

.navbar-project ul{
  display: flex;
  flex-direction: column;
  
}

.navbar-project ul li{
  display: none;
}

.navbar-project ul:hover li{
  display: block;
}


 @media screen and (max-width: 500px) {
   .navbar-project a {
     float: none;
     display: block;
     width: 100%;
     text-align: left;
   }
 }
 <div class="navbar-project">
   <a href="#">Details</a> 
   <a href="#">Forms</a> 
   <a href="#">Documents</a> 
   <ul><a href="#">Help</a>
     <li>Item 1</li>
     <li>Item 2</li>
     <li>Item 3</li>
     
   </ul> 
 </div>

注意::我相信出于语义的考虑,始终使用ul或 您ol中的nav menu就像 Kai 在另一条评论中解释的那样, 正如我演示的那样,需要在第一个列表中创建另一个列表。

编辑:我做了一些修改,这次可以使用25%的宽度,this is the example