在使用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也失效,就可以正常上下滚动了。 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐