移动端汉堡菜单被个人介绍区块遮挡的z-index问题求助
解决移动端汉堡菜单被个人介绍区块遮挡的问题
兄弟,我瞅了你的代码,问题根本不是单纯调z-index就能搞定的,核心是堆叠上下文的创建规则在搞怪!咱们一步步拆解:
问题根源
你的.myname用了position: absolute,这会让它自动创建一个堆叠上下文;但你的导航栏.navigatie是默认的position: static,这种情况下,哪怕你给.meniu-navbar加再大的z-index都没用——因为父元素不在堆叠上下文里,子元素的层级根本没法和.myname的层级对比。
具体修复步骤
我给你改了关键的CSS代码,直接用就行:
修改后的核心CSS
/* 给导航栏添加定位,创建自己的堆叠上下文 */ .navigatie{ display: flex; flex-direction: row; width: 100%; position: relative; /* 这行是关键! */ z-index: 1; } /* 给菜单设置足够高的z-index,确保在个人介绍之上 */ .meniu-navbar{ display: flex; justify-content: space-around; flex-direction: row; padding-top: 5px; z-index: 999; } /* 新增移动端适配逻辑——你之前的汉堡按钮是隐藏的! */ @media (max-width: 768px) { label{ display: block !important; /* 显示汉堡按钮 */ cursor: pointer; } .meniu-navbar{ position: absolute; top: 70px; /* 贴在导航栏下方 */ right: 0; width: 100%; flex-direction: column; background-color: #fff; /* 加背景避免和下面内容重叠 */ box-shadow: 0 2px 6px rgba(0,0,0,0.1); display: none; /* 默认隐藏菜单 */ } /* 点击复选框后显示菜单 */ #toggle:checked + .meniu-navbar{ display: flex; } /* 移动端调整logo边距,避免太靠边 */ .logo{ margin-left: 20px; } } /* 可选:明确个人介绍的层级低于菜单 */ .myname{ position: absolute; top: 180px; left: 70px; z-index: 0; }
为啥这么改?
position: relative给导航栏:只有非static的定位元素才能创建堆叠上下文,这样子元素.meniu-navbar的z-index才会生效,能和.myname的层级对比。- 修复移动端菜单显示逻辑:你之前的
label是display: none !important,移动端根本看不到汉堡按钮,我在媒体查询里把它显示出来,还加了菜单的显示/隐藏逻辑。 - 菜单加背景色:避免菜单和下面的个人介绍文字重叠,让用户能看清菜单选项。
要是还不行,你检查下页面里有没有其他元素设置了更高的z-index,比如弹窗、固定导航之类的,确保菜单的z-index是最高的就行。
内容的提问来源于stack exchange,提问作者Tudor Alexandru
相关产品推荐
相关产品推荐

