起因
在微信小程序中使用uni-popup组件时,出现滚动穿透,并且uni-popup内部内容不会滚动问题。
解决
滚动穿透
查阅官方文档,发现滚动穿透是由于平台差异性造成的,具体解决可以参照文档禁止滚动穿透
javascript
<template>
<page-meta :page-style="'overflow:'+(show?'hidden':'visible')"></page-meta>
<view class="container">
<!-- 普通弹窗 -->
<uni-popup ref="popup" background-color="#fff" @change="change">
<!-- ... -->
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
show:false
}
},
methods: {
change(e) {
this.show = e.show
}
}
}
</script>
内部滚动
内部滚动解决方式比较简单,在uni-popup里面加上一个scroll-view组件,并设置scroll-y属性为true就好。其他优化如下:
- 将uni-popup组件的padding设置为0,是为了让滚动条出现在边上,而不是内部
- scroll-view里面的view设置一个高度,是为了防止超出状态栏
javascript
<uni-popup ref="execPopup" background-color="#fff" @change="changePopup" style="padding: 0;">
<scroll-view :scroll-y="true">
<view class="popup_box" style="height: calc(100vh - 80px);padding: 20px;">
</view>
</scroll-view>
</uni-popup>