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

如何让多级顶部导航的二级子菜单向右展开避免被遮挡?

多级导航菜单超级子菜单显示位置修复

问题说明

我正在完成一个多级顶部导航,但无法实现让“超级子菜单”项显示在“子菜单”项的右侧。目前它们显示在下方,非最后一项会被遮挡。尝试调整CSS但感到困惑,不想用JavaScript控制显示。

解决方案

只需要修改两处CSS规则,就能实现超级子菜单在子菜单右侧显示:

  • 针对二级子菜单调整定位:将其从父元素左侧改为右侧起始,并修正垂直偏移
  • 移除二级子菜单列表项的清除浮动规则,避免布局错乱

修改后的完整代码

CSS代码

ul {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

li {
    color: #fff;
    background: rgb(29, 39, 87);
    display: block;
    float: left;
    padding: 1rem;
    position: relative;
    text-decoration: none;
    transition-duration: 0.5s;
}
  
li a {
    color: #fff;
}

li:hover,
li:focus-within {
    background: #cc1f2e;
    cursor: pointer;
}

li:focus-within a {
    outline: none;
}

ul li ul {
    background: rgb(29, 39, 87);
    visibility: hidden;
    opacity: 0;
    min-width: 5rem;
    position: absolute;
    transition: all 0.5s ease;
    margin-top: 1rem;
    left: 0;
    display: none;
}

/* 调整二级子菜单的定位,从父元素右侧显示 */
ul li ul li ul {
    margin-top: -1rem;
    left: 100%;
}

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

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

/* 移除二级子菜单列表项的清除浮动,避免布局错位 */
ul li ul li ul li {
    clear: none;
}

HTML代码

<nav role="navigation">
  <ul>
    <li><a href="#">Item 1</a></li>
    <li><a href="#" aria-haspopup="true">Item 2</a>
      <ul class="dropdown" aria-label="submenu">
        <li><a href="#">Submenu 1</a>
          <ul class="dropdown2">
            <li><a href="#">Super Submenu 1</a></li>
          </ul>
        </li>
        <li><a href="#">Submenu 2</a>
          <ul class="dropdown2">
            <li><a href="#">Super Submenu 2</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li><a>Item 3</a></li>
  </ul>
</nav>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:22:47