原因:
在蘋果手機上, transform 變換的時候會讓 z-index “臨時失效”,其實並非 z-index 失效了,只是 z-index 被用在不同的 stacking context 上,而非在默認的 context 上同等地比較層級了。所以 DOM 在 transform 的工程中,DOM 處於一個新的 stacking context 里,z-index 也是相對於這個 stacking context 的,所以表現出來的實際是 stacking context 的層次,動畫一結束,DOM 又回到默認的 context 里,這時的 z-index 才是在同一個 context 上的比較。
解決方法:
1、首先在出現層級問題的元素上,z-index的大小通過translateZ來設置層級關系:
transform: translateZ(自身z-index的數值px)
原先的z-index最好繼續保留,因為還要考慮到非IOS用戶吖
2、然后在父元素上添加:
transform-style: preserve-3d; // 父元素必須加這個