元素重叠无视z-index问题求助:左侧菜单被主内容元素覆盖
解决侧边菜单被主内容元素覆盖的问题
问题核心是堆叠上下文的冲突:
.content设置了position: relative,成为绝对定位的.sidebar的包含块.page作为 flex 子元素,加上overflow-y: auto属性后,会自动创建一个独立的堆叠上下文- DOM 结构里
.page排在.sidebar之后,默认堆叠顺序更高,导致它的子元素(比如搜索框)会覆盖在侧边菜单之上
修复方案
最简单的解决方式是给 .sidebar 设置一个明确的 z-index 值,让它的堆叠层级高于 .page:
.sidebar { position: absolute; top: 0; left: 0; height: 100%; background-color: black; color: white; z-index: 10; /* 数值只要大于默认的0即可 */ }
原理说明
当元素创建了独立的堆叠上下文后,内部元素的层级只在该上下文内生效。.sidebar 属于 .content 的堆叠上下文,而 .page 是另一个同级的堆叠上下文。通过给 .sidebar 设置更高的 z-index,就能让它在堆叠顺序上优先于 .page 及其所有子元素。
内容的提问来源于stack exchange,提问作者Emaborsa
相关产品推荐
相关产品推荐

