【uniapp】禁止遮罩层下的页面滚动解决办法

这篇具有很好参考价值的文章主要介绍了【uniapp】禁止遮罩层下的页面滚动解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【uniapp】禁止遮罩层下的页面滚动解决办法

不少朋友在日常工作中都会遇到需要自定义弹窗的时候,当开启弹窗后,却发现存在弹窗下的页面依旧可以被触发滚动的问题,以下是相关的解决方法。

可用方法(不推荐):最外层 view 设置 height 和 overflow

根据是否打开的弹窗状态,对最外层 view 设置 height 和 overflow:

<!-- 页面 view -->
<view :style="{height:isOpenCheck?'100vh':'',overflow:isOpenCheck?'hidden':''}"></view>

这个方法通过对页面设置高度来限制底层页面滚动的问题,但这个方法有个缺陷:页面会回到顶部,并且下面的样式会向上面挤压。因此并不是很推荐这个方法。


可用方法(不是很推荐):catchtouchmove='moveHandle'

这个方法很独特,它并不能直接在官方文档里面搜到,具体原因可以看这篇:catchtouchmove这个具体是做什么的?

它其实和官方推荐的方法(下一个方法)是一样的原理,通过阻止冒泡来实现禁止滑动的效果:

<!-- 弹窗 view -->
<view v-if="isOpenCheck" class="date-bg" catchtouchmove="catchTouchMove"></view>
// js 触发的函数
catchTouchMove: function() {
	return false;
},

尽管这个方法可以生效,但触发函数时会莫名生成一堆警告,所以也并不是很推荐这个方法。


可用方法(推荐):@touchmove.stop.prevent="moveHandle"

这个方法也是官方推荐的方法:介绍 | uniapp 官网

若需要禁止蒙版下的页面滚动,可使用 @touchmove.stop.prevent="moveHandle"moveHandle 可以用来处理 touchmove 的事件,也可以是一个空函数。将这个方法直接丢到弹窗的最外层 view 就好了,虽然在编译器上的滚轮依旧可以滚动,但真机环境下的手指滑动无法再触发。文章来源地址https://www.toymoban.com/news/detail-466768.html

<!-- 弹窗 view -->
<view class="mask" @touchmove.stop.prevent="moveHandle"></view>
// js 触发的函数:置空即可
moveHandle: function() {},

到了这里,关于【uniapp】禁止遮罩层下的页面滚动解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【bug】vuxUI组件popup弹出框在IOS中遮罩层会遮住页面

    可以增加自定义方法v-transfer-dom transfer-dom’.js // Thanks to: https://github.com/calebroseland/vue-dom-portal

    2024年04月28日
    浏览(62)
  • 微信程序 自定义遮罩层遮不住底部tabbar解决

    一、先上效果 二 方法 1、自定义底部tabbar 实现: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官网去抄 简单写下:在代码根目录下添加入口文件 除了js 文件的list 需要调整 其他原封不动 代码: js部分 json wxml wxss 2、 list 的中的页面 都需要在 onShow 中加入

    2024年02月12日
    浏览(33)
  • elemtui 提示消息element-ui message被遮罩层覆盖解决方法

    elemtui 提示消息element-ui message被遮罩层覆盖解决方法   问题原因:  最外层的遮罩z-index设置太大  默认 的el-dialog的z-index是2000起的, 而我们的 message 低于2000的,因此将 el-dialog 的z-index设置低于message就 可以 了  

    2024年02月07日
    浏览(53)
  • vue前端页面弹出红色报错遮罩层 Uncaught runtime errors:at handleError (webpack-internal:///./node_modules/webpack

    报错信息: 原因: 当出现编译错误或警告时,在浏览器中显示全屏覆盖。 解决方法: 在vue.config.js中添加如下配置, 重启项目 即可 https://webpack.docschina.org/configuration/dev-server/#overlay

    2024年02月05日
    浏览(46)
  • 解决问题:Element ui组件中Dialog对话框只显示遮罩层,不显示弹框内容

    以下是Dialog 对话框的基本用法: 这个时候页面只显示了遮罩层,但是不显示弹框的内容,查阅文档后,发现有这样一条: append-to-body的默认值是false,所以需要自己在el-dialog标签中手动设置为true,  加上之后弹框内容就可以显示了。

    2024年02月06日
    浏览(35)
  • 解决element-ui组件库中dialog组件只显示遮罩层,未显示弹框的问题

    以下是直接粘贴的组件--基础用法 el-button type=\\\"text\\\" @click=\\\"dialogVisible = true\\\"点击打开 Dialog/el-button el-dialog   title=\\\"提示\\\"   :visible.sync=\\\"dialogVisible\\\"   width=\\\"30%\\\"   :before-close=\\\"handleClose\\\"   span这是一段信息/span   span slot=\\\"footer\\\" class=\\\"dialog-footer\\\"     el-button @click=\\\"dialogVisible = false\\\"取 消

    2024年02月03日
    浏览(70)
  • element-ui 弹窗里面嵌套弹窗,解决第二个弹窗被遮罩层掩盖无法显示的问题

    当我们在 element-ui 中使用弹窗嵌套弹窗时,会出现第二个弹窗打开时被一个遮罩层挡着,就像下面这样: 下面提供两种解决方案 : 一、第一种方案 我们查询element-ui 官网可以发现 el-dialog 有这样几个属性:  具体使用就是在第一个弹窗中设置 :modal-append-to-body=\\\"false\\\"  和 :ap

    2024年02月11日
    浏览(37)
  • element-ui dialog遮罩层在最上层,关掉dialog遮罩层还在

    代码中使用了dialog,dialog中点击某个按钮,又嵌套了一个dialog。 导致最外层的dialog出现后一直被遮罩层遮住,点击确定关掉dialog遮罩层还在。 element-ui的dialog组件有这几个参数:  其中,append-to-body 嵌套的dialog必须指定为true 加上后,遮罩层不再遮挡上层  

    2024年02月11日
    浏览(33)
  • 微信小程序实现一个遮罩层

    微信小程序实现遮罩层 开发中,遮罩层的使用场景很多,例如,loading的时候、例如搜索的时候等。 以下是一个案例:点击页面的搜索框,在页面上添加一层遮罩层,显示搜索详情页 页面搜索框如下: 页面最上面有一个搜索框,下面有一些其他UI元素 遮罩层 需求是,点击首

    2023年04月23日
    浏览(30)
  • 微信小程序弹出层弹出后禁止页面滚动

    1.用一个view标签把页面禁止滚动部分包裹,并添加自定义类名 初始值为空 2. 在弹出层打开是,改变变量的值 3.给isNoRoll设置样式

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包