在使用uview的u-popup时,u-popup弹出但是上下滑动蒙版位置时底层页面还是会被滑动,需要有两种方法可以解决。当使用uniapp弹框时想禁止页面滚动也可以用这种方法。
先尝试方法二!!!先尝试方法二!!!先尝试方法二!!!先尝试方法二!!!
方法一:给底层view直接加一个禁止滚动的事件
<view @touchmove.stop.prevent="stopRoll">
</view>
methods: {
stopRoll() {}
}
@touchmove.stop.prevent是禁止页面滚动事件,可以给方法一个空值,也可以生效。
这个感觉不符合我的需求所以没有用
方法二:用css控制并动态绑定class名来实现,在遮罩层打开的时候css样式也开启,关闭时css样式失效。
<view class="my" @touchend="end" @touchmove="move" :class="{popupShow:popupShow}">
<u-popup :show="popupShow" mode="right" @close="closeMenu"
bgColor="#161823"
safeAreaInsetTop
>
</u-popup>
<u-button type="primary" class="top-right-btn" @click="openMenu">开启遮罩层</u-button>
</view>
<script>
export default {
data() {
return {
popupShow:false;
}
}
methods:{
openMenu() {
this.popupShow = true;
}
closeMenu() {
this.popupShow = false;
}
}
</script>
<style lang="scss" scoped>
.popupShow {
overflow: hidden;
position: fixed;
}
</style>
这个就符合我现在的需求,当蒙版开启时,底层的css样式生效,也就不可滚动,当页面关闭时,绑定的class也失效,就可以正常上下滚动了。