z-index不生效的主因是父容器创建了stacking context,使子元素z-index仅在局部生效;opacity、transform等属性会触发该context,需用开发者工具检查并调整层级策略。z-index 不生效?先确认元素是否创建了 stacking context很多情况下 z-index 看似写了却没用,根本原因不是写错了值,而是父容器悄悄创建了新的 stacking context,把子元素"锁"在局部层级里。比如 opacity: 0.99、transform: translateZ(0)、will-change: transform、filter: blur(1px) 这些属性都会触发新 stacking context ------ 它们本身不显眼,但会让子元素的 z-index 只在该容器内比较,不再和页面其他元素竞争。实操建议:用浏览器开发者工具的「Layers」面板(Chrome)或「3D View」(Firefox)直观查看 stacking context 的嵌套结构检查目标元素所有祖先节点的 computed styles,重点搜 opacity、transform、filter、isolation、position: fixed/sticky若需全局层级控制,尽量避免在中间容器上加触发 stacking context 的属性;必须加时,把 z-index 提到该容器本身,而非它的子元素relative/absolute/fixed 元素的 z-index 是怎么比的?z-index 只对定位元素(position 为 relative、absolute、fixed 或 sticky)有效。但它们的层级不是简单按数字大小排,而是先按 stacking context 分组,再在组内比 z-index 值。常见错误现象:两个 position: absolute 元素,一个 z-index: 100,另一个 z-index: 1,但后者反而盖在上面 ------ 很可能前者父容器是普通 div(无 stacking context),后者父容器有 opacity: 0.99(创建了新 stacking context),而这个容器本身的 z-index 是 10,高于前者所在 context 的默认层(0)。立即学习"前端免费学习笔记(深入)";实操建议:不要只看子元素的 z-index,要查它所属的 stacking context 根节点的 z-index同级定位元素之间才直接比 z-index;跨 context 时,比的是 context 根的层叠顺序z-index: auto 和 z-index: 0 效果不同:auto 不创建 stacking context,0 会(只要元素已定位)modal 遮罩层被 iframe 或 video 盖住?这是浏览器历史遗留行为某些嵌入内容(如 <iframe>、<video>、<select>)在旧版浏览器(尤其 IE 和早期 Chrome)中属于"操作系统级窗口",天然处于最高 stacking level,z-index 无法压制。现代浏览器已大幅改善,但仍有边界情况。 标贝科技 标贝科技-专业AI语音服务的人工智能开放平台
相关推荐
ServBay21 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队用户83562907805121 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)用户83562907805121 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名SelectDB21 小时前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台这个DBA有点耶1 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询掉头发的王富贵1 天前
【StarRocks】极限十分钟入门StarRocksNturmoils1 天前
WHERE 条件别凭习惯写,常用查询先跑一遍荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑用户8356290780512 天前
Python 操作 PDF 附件:添加、查看与管理指南Databend2 天前
在 AWS 中国峰会逛了一天,我在 Databend 展台看到了 Agent 数据基础设施的新思路