z-index 和 fixed 在苹果手机ios不生效

z-index 和 fixed 在苹果手机ios不生效
问题描述
今天开发遇到一个问题:

当一个元素固定定位时(fixed),同层级节点如果不想被固定定位的元素覆盖,那么需要设置 z-index,这样就不会被覆盖了。

举个例子:A是固定定位的元素,B不能被A覆盖,所以需要设置 B z-index(同时需要设置 position: relative,因为Z-index 必须在定位的元素上才能生效)。

.a {
  position: fixed;
  top: 100px;
  left: 100px;
}

.b {
  position: relative;
  z-index: 1;
}
1
2
3
4
5
6
7
8
9
10


这样写,在 PC 上正常,在安卓设备上也是正常的,但是在 ios (苹果手机) 的各种浏览器都不生效。

问题解决
查了资料,这里应该是 iOS 兼容性问题。iOS设备中,z-index 和 fixed 不能生效。解决方法就是增加 transform: translateZ(1px)

z-index is not reliable with position:fixed, as shown in this fiddle: http://jsfiddle.net/mZMkE/2/ use translateZ transformation instead.

那么我们的代码可以改成这样的,这样可以在苹果手机上显示。

.a {
  position: fixed;
  top: 100px;
  left: 100px;
}

.b {
  position: relative;
  z-index: 1;
  -webkit-transform:translateZ(1px);
  -moz-transform:translateZ(1px);
  -o-transform:translateZ(1px);
  transform:translateZ(1px);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
参考链接
https://www.jianshu.com/p/61f30eb93024

https://www.jianshu.com/p/61f30eb93024

https://stackoverflow.com/questions/20832531/mobile-safari-positionfixed-z-index-glitch-when-scrolling
————————————————
版权声明:本文为CSDN博主「Michael18811380328」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41697143/article/details/108542551

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值