当前位置:网站首页>uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
2022-08-02 14:03:00 【星沉大海@T】
问题
最近用uniapp开发一款APP,页面是可以滚动的长列表,自定义组件弹窗遮罩出来后,滑动屏幕底部还在滚动,研究了网上的解决办法:
- 在最外层的view中加入
@touchmove.stop.prevent="moveHandle"
- 在最外层的view中加入
@catchtouchmove="moveHandle"
我测试了一下这两个事件方法发现不太理想,会导致弹窗和底部页面都不能滚动了,或者处理不当就报一些其他错误,还是不太简便。
解决
又看了一下微信小程序官方技术给的介绍,其实问题的根源是浏览器的滚动穿透问题,目前还没有根本性办法解决,但可以在弹窗遮罩出来时给最外层容器设置高度来解决,亲测这个办法还是比较完美的。
具体方法就是 弹出遮罩时动态设置页面最外层容器 style
属性的 height
值为 100vh
。 这里最好使用单位 vh
,100vh
表示整个屏幕的高度,这样因为页面没有超出一屏,所以再在弹窗上滑动时便不会触发底层的滚动事件,自然不会再有滚动穿透这样的问题。
示例代码如下:
<template>
<view class="container" :style="showMsk ? 'height: 100vh' : ''">
<!-- 滚动列表 -->
<scroll-view scroll-y="true">
</scroll-view>
<!-- 自定义弹窗 -->
<view v-if="showMsk" class="msk">
</view>
</view>
<template>
<script>
...
data() {
return {
showMsk: false,
};
},
methods: {
moveHandle: {
return;
}
}
...
</script
边栏推荐
猜你喜欢
【c】小游戏---扫雷雏形
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
Implementation of redis distributed lock and watchdog
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)
yolov5,yolov4,yolov3乱七八糟的
深度学习框架pytorch快速开发与实战chapter4
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
Creating seven NiuYun Flask project complete and let cloud
【c】小游戏---五子棋之井字棋雏形
chapter6可视化(不想看版)
随机推荐
深度学习框架pytorch快速开发与实战chapter3
C语言初级—数组元素的增删改查
PHP open source customer service system _ online customer service source code PHP
drf source code analysis and global catch exception
yolov5,yolov4,yolov3 mess
Unit 8 Middleware
Raj delivery notes - separation 第08 speak, speaking, reading and writing
第十四单元 视图集及路由
C语言日记 7 输入/输出格式控制
The specific operation process of cloud GPU (Hengyuan cloud) training
C语言日记 4 变量
第十二单元 关联序列化处理
Implementation of redis distributed lock and watchdog
Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件
Flask-SQLAlchemy
Flask framework in-depth
Flask框架深入一
[ROS] (05) ROS Communication - Node, Nodes & Master
Flask框架的搭建及入门
C语言初级—从键盘接收一个整形并逆序输出