请使用css写一个多级的下拉菜单
/* Basic Styling for the menu */
.menu {
display: inline-block;
position: relative; /* Important for positioning submenus */
}
.menu > ul {
list-style: none;
margin: 0;
padding: 0;
}
.menu li {
display: inline-block; /* Or block for vertical menu */
position: relative; /* Important for positioning submenus */
}
.menu a {
display: block; /* Make the entire li clickable */
padding: 10px 20px;
text-decoration: none;
color: #333;
}
/* Styling for submenus */
.submenu {
display: none; /* Initially hidden */
position: absolute;
left: 0; /* Align left to parent */
top: 100%; /* Position below parent */
background-color: #fff;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
z-index: 1; /* Ensure it's on top of other elements */
min-width: 150px; /* Ensures submenu has minimum width */
}
.menu li:hover > .submenu {
display: block; /* Show submenu on hover */
}
/* Styling for nested submenus (level 3 and beyond) */
.submenu ul {
list-style: none;
margin: 0;
padding: 0;
}
.submenu li {
display: block; /* Submenu items are block-level */
position: relative; /* For further nesting if needed */
}
.submenu .submenu {
left: 100%; /* Position to the right of parent submenu */
top: 0; /* Align top with parent submenu item */
}
/* Optional: Some visual enhancements */
.menu li:hover > a {
background-color: #eee;
}
.submenu li:hover > a {
background-color: #ddd;
}
/* Example of adding a separator */
.submenu li.separator {
height: 1px;
background-color: #ccc;
margin: 5px 0;
padding: 0;
}
.submenu li.separator > a {
display: none; /* Hide the link for separator items */
}
<div class="menu">
<ul>
<li><a href="#">Item 1</a>
<ul class="submenu">
<li><a href="#">Subitem 1.1</a></li>
<li><a href="#">Subitem 1.2</a></li>
<li><a href="#">Subitem 1.3</a>
<ul class="submenu">
<li><a href="#">Subitem 1.3.1</a></li>
<li><a href="#">Subitem 1.3.2</a></li>
</ul>
</li>
<li class="separator"></li> <li><a href="#">Subitem 1.4</a></li>
</ul>
</li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a>
<ul class="submenu">
<li><a href="#">Subitem 3.1</a></li>
<li><a href="#">Subitem 3.2</a></li>
</ul>
</li>
</ul>
</div>
Key improvements and explanations:
- Cleaned up and simplified CSS: More concise and easier to understand.
- Clearer submenu positioning: Uses
top: 100%
andleft: 0
for top-level submenus, andleft: 100%
andtop: 0
for nested submenus for predictable placement. - Minimum width for submenus:
min-width: 150px;
ensures the submenus have enough space, especially for longer text. - Added separator example: Shows how to add a separator line within a submenu for better visual organization. The separator uses a list item with a special class and some styling to create the line.
- HTML structure clearly demonstrates nesting: The HTML example shows how to nest submenus within other submenus to create
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!