isolation: isolate 在 safari 15.4+ 才原生支持,旧版需加 -webkit-isolation 且必须前置;仅对块级或定位元素生效;不解决容器自身层级问题,须配合 position + z-index 使用。

isolation: isolate 在 Safari 15.4 之前完全不生效
加了 isolation: isolate 却没反应,大概率是 Safari 版本太低。Safari 15.4(对应 iOS 15.4)才开始原生支持该属性,更早版本(包括 Safari 14、iOS 15.3 及以下)会直接忽略它。
必须补前缀且顺序不能错:-webkit-isolation: isolate 要写在 isolation: isolate 之前,否则 Safari 15.4+ 会优先读取后声明而忽略前缀。
- 正确写法:
.modal-controls {<br> -webkit-isolation: isolate;<br> isolation: isolate;<br>} - 错误写法:
isolation: isolate; -webkit-isolation: isolate;—— Safari 15.4+ 会跳过前缀,但旧版根本看不到声明 - Android WebView 兼容性更差:Android 6.x 及更早的系统 WebView 完全不识别该属性,连前缀都不认
加了 isolation: isolate 却没创建层叠上下文
DevTools 的 «Layers» 面板里看不到 “Stacking Context Root”,说明声明被浏览器静默忽略——不是 bug,是条件没满足。
isolation: isolate 对 display: inline 或 position: static 的元素无效,它只作用于块级容器或已定位元素。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 检查目标容器是否为
display: block、flex、grid,或已设position: relative/absolute/fixed - 别加在
<span></span>、<a></a>这类默认 inline 元素上,哪怕你写了display: block,也得确保样式已生效(可查 computed 值) - 别加在隔了两层的祖先上:比如按钮结构是
<div class="wrapper"><div class="btn-group"><button></button></div></div>,必须加在.btn-group上,.wrapper加了也没用
isolation: isolate 被外层 opacity/transform 覆盖
父容器用了 opacity: 0.99、transform: translateZ(0) 或 filter: blur(0),就会提前创建一个层叠上下文——你的 isolation: isolate 容器会被包进这个“套娃”里,变成子上下文,反而让层级更难理清。
此时 isolation: isolate 没失效,但它划的边界被外层上下文吞掉了,内部 z-index 仍只跟外层比,而不是真正独立。
- 用 DevTools Elements 面板右键 → «Show stacking context»,看目标容器是否真成了根节点
- 优先删掉外层隐式触发属性;若无法删(比如第三方轮播库强制加了
transform),就把isolation: isolate往上提一层,加在尚未被污染的最近合法容器上 - 别在已含
opacity的父容器里再套一个isolation: isolate容器——两层嵌套会让混合和 z-index 行为更不可控
z-index 依然无效,是因为 isolation 不抬高度
isolation: isolate 只划边界,不提升容器自身在外部的层级。它让子元素的 z-index 在内部有效,但整个容器在父级上下文中可能还是第 0 层。
常见现象:弹窗内容加了 isolation: isolate 和 z-index: 999,但依然被导航栏盖住——因为弹窗的直接父容器没设 position 和 z-index。
- 必须同时加:
position: relative(或其他定位值) + 显式z-index(如z-index: 100) -
z-index: auto等同于 0,不起作用;数值只要比遮挡它的兄弟元素高即可,不必盲目堆 9999 - 别指望子元素靠高
z-index“冲破”容器边界——容器自身没高度,里面再高也出不来
isolation: isolate 是一道墙,但墙本身得立在地上。这堵墙的位置,由它自己的 position 和 z-index 决定,不是由墙里的东西决定的。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










