vue2解决uniapp使用uview的u-popup弹出层,遮罩下主页面还可以滑动问题

解决思路就是给body中添加样式,控制其内容溢出裁剪,不滚动,即overflow:hidden
具体步骤:
  1. 新建utils/isScroll.jsVue原型上添加禁止滚动和恢复滚动的方法
js 复制代码
import Vue from "vue";

// 禁止滚动
Vue.prototype.noScroll = function () {
  document.body.style.overflow = "hidden";
};

// 追加滚动
Vue.prototype.canScroll = function () {
  document.body.style.overflow = "";
};
  1. main.js引入utils工具方法文件
js 复制代码
import "./utils/isScroll";
  1. 模板template中使用

    • 当打开popup弹出层时:
    js 复制代码
    	<view
        	@tap="
            	() => {
                	show = true;
                	noScroll();
                }
            "
        	>
        	点击弹出弹出层
    	</view>
    • 当关闭popup弹出层时:
    js 复制代码
    <u-popup
    	:show="show"
    	mode="right"
    	@close="
    		() => {
    			show = false;
    			canScroll();
    		}
    	"
    closeable
    >
    	<view>...内容</view
    </u-popup>
  2. methods中使用

    • 当打开popup弹出层时:
    js 复制代码
    <view @tap="open">
    	点击弹出弹出层
    </view>
    	// ...
    <script>
    	methods: {
    		open(){
    			this.show = true
    			this.noScroll()
    		}
    	}
    </script>
    • 当关闭popup弹出层时:
    js 复制代码
    <u-popup
    	:show="show"
    	mode="right"
    	@close="close"
    	closeable
    >
    	<view>...内容</view
    </u-popup>
    // ...
    <script>
    	methods: {
    		close(){
    			this.show = false
    			this.canScroll()
    		}
    	}
    </script>
相关推荐
Bug-制造者33 分钟前
【Vue3 实战】全局错误处理体系搭建:实现业务与错误彻底解耦
前端·javascript·vue.js
前端那点事2 小时前
Vue3+TS 封装高复用 ECharts 通用组件,自适应+防抖+主题切换,开箱即用
前端·vue.js
前端那点事3 小时前
Vue3+TS动态路由终极方案|后端权限、刷新不丢、按钮权限、解决所有404BUG
前端·vue.js
前端那点事3 小时前
Vue3+TS手写不定高虚拟列表Hooks,彻底解决长列表卡顿,生产直接复用
前端·vue.js
梦梦代码精7 小时前
深度拆解:上门按摩系统如何成为本地生活“到家时代”的新引擎?
docker·小程序·uni-app·开源·生活·开源软件
KnowWhere7 小时前
Vue3 调试技巧:一键挂载组件实例到 Window(仅开发环境生效)
vue.js
A南方故人7 小时前
vue3常用指令以及注册
前端·javascript·vue.js
helloweilei7 小时前
Vue 3 中 <script setup>顶层 await与 <Suspense>的结合使用
vue.js
Aolith9 小时前
从0到1实现帖子上传图片:我是如何复用头像上传逻辑的
vue.js·图片资源
懂懂tty9 小时前
Vue3 手写响应式原理
前端·vue.js