Safari中使用transform 3D变换导致的z-index异常
问题描述
在之前写博客《CSS揭秘》读书笔记(二):形状的过程中偶然发现这样一个问题:
在Safari中使用transform 3D变换可能会导致z-index渲染结果与Chrome中渲染结果不一致,考虑如下情况
1 | <body> |
1 | .line { |
在Chrome浏览器中结果是
将z-index
删掉后
但是在Safari中情况有所不同,无论是否保留z-index
属性,结果唯一且与Chrome不同:
从这个对比可以看出,在3D transform变换中z-index
属性的渲染在Chrome和Safari中有很大的不同,Safari似乎并不考虑这种情况下的z-index
,而是采用更符合真实世界人眼观测视角的方法渲染元素
解决方法
可以对原本处于上层的元素设置做一个translateZ
变换将其“抬高”
1 | .line { |
参考:https://www.zhangxinxu.com/wordpress/2016/08/safari-3d-transform-z-index/