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

为何Flexbox导航下拉时Grid元素six会穿透显示?

问题原因解析

核心逻辑:层叠上下文与Grid子元素的特殊z-index规则

  • 默认层叠顺序规则
    所有未创建独立层叠上下文的元素,都处于根层叠上下文(由<html>标签创建)中。在这个上下文里,元素的堆叠优先级遵循:

    非定位元素/定位元素(z-index:auto)的优先级由DOM顺序决定——后面的元素会覆盖前面的元素。
    如果你的six元素在DOM结构中排在导航下拉菜单之后,窄屏布局切换后,它自然会覆盖下拉菜单,出现穿透现象。

  • Grid子元素的z-index特殊行为
    CSS规范对Grid容器的子元素有特殊规定:哪怕子元素是默认的static定位,只要设置了z-index属性(无论值是正、负还是0),就会创建独立的层叠上下文,并且其堆叠优先级由z-index值直接决定。
    当你给six设置负z-index后,它的层叠上下文优先级会低于根上下文里所有非负z-index的元素(包括你的导航下拉菜单),因此会被下拉菜单覆盖,穿透问题解决。

补充验证点

如果你的导航下拉菜单是absolute/relative这类定位元素,原本优先级应该高于非定位的six,但如果six在DOM中更靠后,且导航容器没有创建独立层叠上下文,six依然能覆盖它——这时候给six加负z-index触发层叠上下文,就能把它压到下拉菜单下方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:36:28