苹果手机 iOS 系统 ,使用scroll-view会把scroll-view里包裹的遮罩层截断失效,(苹果手机、ios系统使用scroll-view,fixed定位层级不正确)
产生原因
因为 iOS 下加了 -webkit-overflow-scrolling: touch,这个会产生滚动惯性,体验更好,但会改变 fixed 的行为;
而且在 iOS 中,position: fixed 对于 scroll-view 中的元素来说,是相对于 scroll-view 容器进行位置固定的,而不是相对于浏览器窗口。
这意味着当 scroll-view 滚动时,position: fixed 的元素会保持相对于 scroll-view 的相同位置,而不会相对于浏览器窗口移动。
这是因为 scroll-view 在 iOS 中被视为一个独立的滚动容器,具有自己的坐标系。当 scroll-view 滚动时,其内部元素的位置会相对于 scroll-view 的坐标系进行调整,而不是相对于浏览器窗口的坐标系。
解决方法
一、这是官方给出的回答 在底下也给出了解决方法
二、总结解决方法
1、方法一:把需要fixed定位的元素放在scroll-view外面
2、方法二:在全局(注意是在全局文件中)app.vue中 写入
.wx-scroll-view {
-webkit-overflow-scrolling: auto;
}
3、方法三:把scroll-view中包裹的需要fixed定位的元素使用根标签root-portal进行包裹
例如 u-popup是弹出层 在弹出层上有fixed定位属性
<root-portal>
<u-popup v-model="specClass" mode="bottom" border-radius="24" closeable z-index="99999">
<view class="subLeftImg">哈哈哈</view>
</u-popup>
</root-portal>