You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用CSS为无ul/li的HTML横向菜单添加二级子菜单(代码失效)

修复无ul/li结构的二级下拉菜单问题

你的代码存在几个关键问题导致二级下拉菜单无法正常工作,下面是修正后的完整代码,以及关键修改说明:

修正后的HTML代码

<!--header code starts here-->  

<a class="btn" href="homepage"><i class="fa fa-home"></i></a>
<a class="active"  href="index.html">Index</a>
<a class="active3" href="Updates">Updates</a>
<!--dropdowncode starts -->

<div class="dropdown">
  <button class="dropbtn">Business Updates
    <i class="fa fa-caret-down"></i>
  </button>
  <div class="dropdown-content">
    <a href="Link1.htm">Buisness Plans</a>
    <a href="Link2.htm">Link2</a>
    <!-- 二级菜单容器,新增sub-dropdown包裹父链接和二级菜单 -->
    <div class="sub-dropdown">
      <a href="submenu.htm">Submenu Link 1<i class="fa fa-caret-right"></i></a>
      <div class="dropdown-content2">               
        <a href="Submenu2.htm">Submenu Link2</a>
        <a href="Submenu3.htm">Submenu Link 3</a>
        <a href="Submenu4.htm">Submenu Link 4</a>
        <a href="Submenu5.htm">Submenu Link 5</a>
      </div>
    </div>
    <a href="Link3.htm">Link3</a>
    <a href="Link4.htm">Link4</a>
    <a href="Link5.htm">Link5</a>
    <a href="Link6.htm">Link6</a> 
    <a href="Link7.htm">Link7</a>
    <a href="Link8.htm">Link8</a>
  </div>
</div>

<div class="dropdown">
  <button class="dropbtn">Construction Updates
    <i class="fa fa-caret-down"></i>
  </button>
  <div class="dropdown-content">
    <a href="#">Buisness Plans</a>
    <a href="Link2.htm">Link2</a>
    <a href="Link3.htm">Link3</a>
    <a href="Link4.htm">Link4</a>
    <a href="Link5.htm">Link5</a>
    <a href="Link6.htm">Link6</a> 
    <a href="Link7.htm">Link7</a>
    <a href="Link8.htm">Link8</a>
  </div>
</div>

修正后的CSS代码

/* MENU CODE STARTS*/

/* BUTTON*/

.btn {
  background-color: #333;
  float: left;
  border: none;
  color: white;
  padding: 8px 16px;
  font-size: 22px;
  cursor: pointer;
}
.search {
  background-color: #333;
  float: right;
  border: none;
  color: white;
  padding: 8px 16px;
  font-size: 22px;
  cursor: pointer;
}
/* Add a black background color to the top navigation */
.topnav {
  background-color: #333;
  overflow: hidden;
  color: #006666;
  font-weight: bold;
  font-family: helvetica, verdana, arial, helvetica, sans-serif;        
}

/* Style the links inside the navigation bar */
.topnav a {
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 12px;
  font-family: helvetica, verdana, arial, helvetica, sans-serif;    
}

/* Change the color of links on hover */
.topnav a:hover {
  background-color: #ddd;
  color: black;
  font-family: helvetica, verdana, arial, helvetica, sans-serif;    
}

/* Add a color to the active/current link */
.topnav a.active {
  background-color: #0B6121;
  color: white;
}

/* Add a color to the OTHER active/current link */
.topnav a.active2 {
  background-color: #006666;
  color: white;
}

.topnav input[type=text] {
  border: 1px solid #ccc;
}

/* Navbar container */
.navbar {
  overflow: hidden;
  background-color: #333;
  font-family: Helvetica;
}

/* Links inside the navbar */
.navbar a {
  float: left;
  font-size: 16px;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

/* The dropdown container */
.dropdown {
  float: left;
  overflow: hidden;
}

/* Dropdown button INHERIT COLOR */
.dropdown .dropbtn {
  font-size: 12px;
  font-family: helvetica, verdana, arial, helvetica, sans-serif;
  font-weight: bold;    
  border: none;
  outline: none;
  color: white;
  padding: 14px 16px;
  background-color: inherit;
  font-family: inherit; /* Important for vertical align on mobile phones */
  margin: 0; /* Important for vertical align on mobile phones */
}

/* Add a darkgrey background color to navbar links on hover */
.navbar a:hover, .dropdown:hover .dropbtn {
  background-color: darkgrey;
}

/* Dropdown content (hidden by default) */
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

/* 二级菜单容器,设置相对定位让子菜单基于它定位 */
.sub-dropdown {
  position: relative;
}

/* Dropdown content (hidden by default) - 修正定位 */
.dropdown-content2 {
  display: none;
  position: absolute;
  top: 0;
  left: 100%;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

/* Text Links inside the dropdown */
.dropdown-content a {
  float: none;
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
  text-align: left;
}

/* Add a grey background color to dropdown links on hover */
.dropdown-content a:hover {
  background-color: #ddd;
}

/* Show the dropdown menu on hover */
.dropdown:hover .dropdown-content {
  display: block;
}

/* 修正二级菜单触发逻辑:仅当悬停在父链接容器上时显示 */
.sub-dropdown:hover .dropdown-content2 {
  display: block;
}

/* Style the buttons that are used to open the tab content */
.tab button {
  background-color: inherit;
  float: left;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 14px 16px;
  transition: 0.3s;
}

/* Change background color of buttons on hover */
.tab button:hover {
  background-color: #ddd;
}

/* Create an active/current tablink class */
.tab button.active {
  background-color: #ccc;
}
/* Style the tab content */
.tabcontent {
  display: none;
  padding: 6px 12px;
  border: 1px solid #ccc;
  border-top: none;
}
.fa-caret-right{
 float:right;
}

关键修改说明

  1. HTML结构调整:用.sub-dropdown容器包裹二级菜单的父链接和二级菜单,确保二级菜单能正确定位。同时修复了<a class href="...">的语法错误,去掉多余的空class属性。
  2. CSS定位修正:给.sub-dropdown添加position:relative,让.dropdown-content2基于它定位;把.dropdown-content2的margin-left:320px改成left:100%; top:0,避免偏移过大,且位置更精准。
  3. 触发逻辑修复:将二级菜单的显示条件从.dropdown:hover .dropdown-content2改为.sub-dropdown:hover .dropdown-content2,只有当鼠标悬停在包含二级菜单的父链接上时,才会显示二级菜单,避免误触发。
  4. 冗余代码清理:删除了重复的列表样式代码(原CSS中多次重复定义ul.a、ul.b等),以及一处多余的闭合括号。

内容的提问来源于stack exchange,提问作者Jon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:17:04