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>
相关推荐
一只大黑洋16 分钟前
Clipboard.js 复制内容
前端·javascript·vue.js
鹏多多20 分钟前
vue混入mixins详解和生命周期影响
前端·javascript·vue.js
柯南952722 分钟前
Vue 3 响应式系统核心:dep.ts 解析
vue.js
岁月宁静28 分钟前
MCP 协议应用场景 —— Cursor 连接 Master Go AI
前端·vue.js·人工智能
前端小巷子2 小时前
Vue 3全面提速剖析
前端·vue.js·面试
尖椒土豆sss2 小时前
踩坑vue项目中使用 iframe 嵌套子系统无法登录,不报错问题!
前端·vue.js
画月的亮2 小时前
前端处理导出PDF。Vue导出pdf
前端·vue.js·pdf
知识分享小能手8 小时前
Vue3 学习教程,从入门到精通,Axios 在 Vue 3 中的使用指南(37)
前端·javascript·vue.js·学习·typescript·vue·vue3
伍哥的传说8 小时前
Mitt 事件发射器完全指南:200字节的轻量级解决方案
vue.js·react.js·vue3·mitt·组件通信·事件管理·事件发射器
一枚小小程序员哈11 小时前
基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js
vue.js·node.js·express