uniapp使用u-popup组件弹窗出现页面还可滑动

*1、问题所在:

弹窗遮罩层出现了页面依旧可以上下滑动

2、要求:

为了用户更好交互体验,弹窗出现后应禁止页面往下滑动

3、实现思路:

在弹窗盒子外层添加个阻止触摸冒泡事件,使用@touchmove.stop.prevent

4、代码如下:

这里我封装成了组件弹窗

javascript 复制代码
<template>
	<view class="popup" @touchmove.stop.prevent="prevent">
		<u-popup :show="detailShow" @close="$emit('closeDialog', false)" mode="center" :round="20" :safeAreaInsetBottom="false">
			<view class="popup-box">
				<view class="popup-box-top">
					<image :src="popupExtraData.popupPic" mode="aspectFill">
					</image>
				</view>
				<view class="popup-box-section">
					<view class="section-teatil margin-top-sm flex justify-center text-xl text-bold">{{popupExtraData.popupTitle}}
					</view>
					<view class="section-inner" v-for="(item,index) in popupDataList" :key="item.name">
						<view class="flex align-center margin-left-sm text-df">
							<view class="inner-name margin-top-sm margin-right-xs name-text">{{item.name}}:</view>
							<view class="inner-name margin-top-sm  content-text">
								{{item.content?item.content:item.nullContent}}</view>
						</view>
					</view>
				</view>
			</view>
		</u-popup>
	</view>
</template>

<script>
	export default {
		props: {
			popupExtraData: { //传递额外的样式参数信息
				type: Object,
				default: function() {
					return {};
				},
			},
			popupDataList: { //传递数据列表信息
				type: Array,
				default: function() {
					return [];
				}
			},
			popupShow: { //传递弹窗是否显示
				type: Boolean,
				default: false
			}
		},
		data() {
			return {
				detailShow: false
			};
		},
		methods:{
			prevent(e){}//弹窗弹起禁止页面滑动
		},
		watch: {
			popupShow: {
				handler: function(newVal) {
					this.detailShow = newVal
				},
				deep: false, // 深度监听
				immediate: false // 立即执行
			}
		},
	}
</script>
相关推荐
青山Coding2 分钟前
Cesium应用(二):基于heatmap.js 的全球气象可视化实现方案
前端·gis·cesium
羊锦磊10 分钟前
[ CSS 前端 ] 网页内容的修饰
java·前端·css
浊浪载清辉17 分钟前
基于HTML5与Tailwind CSS的现代运势抽签系统技术解析
前端·css·html5·随机运签·样式技巧
bluebonnet2718 分钟前
【Python】一些PEP提案(六):元类、默认 UTF-8、Web 开发
开发语言·前端·python
程序员码歌20 分钟前
【零代码AI编程实战】AI灯塔导航-从0到1实现篇
android·前端·人工智能
熬耶28 分钟前
Uniapp之微信小程序自定义底部导航栏形态
微信小程序·小程序·uni-app
快起来别睡了43 分钟前
深入理解 Promise 的高阶用法:从入门到手写实现
前端
yvvvy1 小时前
前端跨域全解析:从 CORS 到 postMessage,再到 WebSocket
前端·javascript·trae
摸着石头过河的石头2 小时前
手把手教你用VS Code玩转Gitee协作:从环境配置到高效提交
前端·visual studio code
张志鹏PHP全栈2 小时前
Vue3第十八天,Vue3中的组件通信
前端·vue.js