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

如何解决纯CSS实现的粘性下拉菜单中相邻菜单浮动问题

解决下拉菜单展开时挤动右侧菜单的问题

问题根源在于下拉菜单的定位逻辑:当前.drop_items使用position: relative,会占据文档流空间,当菜单项宽度超过按钮时,就会挤压右侧的兄弟菜单。只需修改两处CSS即可解决:

需要调整的CSS部分

  1. 给.menu_drop添加position: relative,让下拉菜单的绝对定位以它为参考容器:
.menu_drop { /* dropdown with menu items */
    float: left;
    overflow: hidden;
    position: relative; /* 新增:作为下拉菜单的定位父容器 */
}
  1. 将.drop_items的position改为absolute,并设置left: 0确保对齐按钮左侧,同时脱离文档流:
.drop_items {
    display: none;
    position: absolute; /* 修改:脱离文档流,不再占用行空间 */
    left: 0; /* 确保下拉菜单对齐父容器左侧 */
    background-color: #c0c0c0;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    z-index: 1;
    white-space: nowrap; /* 可选:防止菜单项文本换行,保持一行显示 */
}

修改后的完整CSS代码

.nav_menu {
    overflow: hidden;
    position: fixed;
    top: 0;
    width: 100%;
    color: #ffffff;
}

.nav_bar { /* nav_menu background to keep it transparent and to add background only to top bar */
    overflow: hidden;
    background-color: #000000;
    position: absolute;
    top: 0;
    width: 100%;
    height: 2.1em;
    z-index: -100; /* to show behind menu buttons */
}

/* Menu items with dropdowns */

.menu_drop { /* dropdown with menu items */
    float: left;
    overflow: hidden;
    position: relative; /* 新增定位父容器 */
}

.drop_button { /* a button that opens dropdown */
    color: inherit;
    background-color: inherit;
    font-family: inherit; /* to be the same as parent */
    font-size: inherit;
    padding: 0.5em;
    border: none;
    outline: none;
}

.drop_items {
    display: none;
    position: absolute; /* 修改为绝对定位 */
    left: 0; /* 对齐父容器左侧 */
    background-color: #c0c0c0;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    z-index: 1;
    white-space: nowrap; /* 可选:保持菜单项单行显示 */
}

.drop_items a {
    float: none;
    display: block;
    text-align:left;
    padding: 0.5em;
    color: #000000;
    text-decoration: none;
}

.drop_items a:hover {
    color: #ffffff;
    background-color: #000000;
}

.menu_drop:hover .drop_button { /* button color when hovered */
    color: #000000;
    background-color: #c0c0c0;
}

.menu_drop:hover .drop_items { /* show dropdown when hovered */
    display: block;
}

效果说明

修改后,下拉菜单会脱离文档流,悬浮在页面内容上方,不会占用按钮所在行的空间,因此右侧菜单按钮不会被挤动。同时菜单依然保持固定在页面顶部的特性,鼠标悬停时正常展开下拉选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:25:55