uniapp H5遮罩层、弹窗以及蒙层滚动穿透/滑动穿透解决办法

 更新时间:2024年01月25日 08:57:00   作者:weixin_45368519  
最近用uin-app做项目遇到了不少问题,下面这篇文章主要给大家介绍了关于uniapp H5遮罩层、弹窗以及蒙层滚动穿透/滑动穿透的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

首先来一句:uniapp 一端开发,多端BUG近期项目用到了uniapp + uview 就出现了很多奇怪的问题,滚动穿透问题更是奇怪且多发。不论是弹窗,蒙层,遮罩,或者普通的元素置顶都会出现,也是解决了很久,特地记录一下,希望对各位’牛马’有用

一、解决过程

第一次:在uview 组件(时间组件)u-datetime-picker上碰到,通过百度也是找到了解决方法

// 在父级元素添加重写滚动事件   @touchmove.stop.prevent="() => { }"
<view @touchmove.stop.prevent="() => { }">
	<u-datetime-picker :show="isOpenDateHMS"  :minDate="getMillisecond()" @confirm="closeDateHMS" mode="datetime">
	</u-datetime-picker>
</view>

第二次:是写了自定义的遮罩层,居然这个问题又来了

但是使用了第一次的方法@touchmove居然不生效(・ε・`)

<template>
	<view class="container">
    	<view class="shade" v-if="canEdite"></view>
	</view>
</template>
<style scoped lang="scss">
@import "common.scss";
.shade{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: transparent !important;
  z-index: 9999;
}
</style>

怎么办呢,继续找呗,还真找到了,他支持page-meta

<template>
	<view class="container">
		<page-meta :page-style="spanStyle"></page-meta>	
    	<view class="shade" v-if="canEdite"></view>
	</view>
</template>
<script >
  export default {
    data() {
      return {
        spanStyle:"overflow:auto"
      }
    },
    methods: {
      upPop(canEdite){
        if(canEdite){
          this.spanStyle="overflow:hidden";
        }else{
          this.spanStyle="overflow:auto";
        }
      }
    }
  }
</script >

linkstart~~~~ 运行,啊!什么啊,它并没有生效,又弄了很长时间,但是项目又比较急就只能搁置了,后面在花时间弄吧

第三次:它它它真滴又出现啦,不过这次是在其他地方uview 弹出层组件 u-popup

我心里想同样是uview的东西那写哪个也应该会生效 --@touchmove,但是它辜负了我的信任,居然没有用
完了客户又在提这个问题了,怎么办呢,谁让客户是上帝呢,智障客户又不是不能用,只能在研究呗,又是2个小时,当要我放弃时终于看到了希望,发现这个鬼玩意的滚动条居然是在整个page上的,试着在控制台写了点样式居然生效了,这不就是转机嘛*.。(๑・∀・๑)*.。在uni组件的文件里面找到这个路径 uni_modules/uview-ui/components/u-popup/u-popup.vue

watch: {
	show(newValue, oldValue) {
		//在这里添加一句样式    ㄟ(≧◇≦)ㄏ  
	    document.body.style.overflow = !newValue ? "auto" : "hidden";
	    // 是的就是这句话就能解决穿透的问题
		if (newValue === true) {
			// #ifdef MP-WEIXIN
			const children = this.$children
			this.retryComputedComponentRect(children)
			// #endif
		}
	}
	},

document.body.style.overflow 这个样式在其他地方写也是会生效的只要控制好出现的时间就能解决滚动穿透的问题

二、结语

这个滚动穿透的问题绝不止出现的h5这一个平台上,可能会出现在其他地方,毕竟一端开发,多端BUG,后面也是关注过,在各种小程序中也有这个问题,后面要是在项目中遇到的话再来更新吧

到此这篇关于uniapp H5遮罩层、弹窗以及蒙层滚动穿透/滑动穿透解决办法的文章就介绍到这了,更多相关uniapp H5遮罩层弹窗滚动穿透问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 小程序实现上传视频功能

    小程序实现上传视频功能

    这篇文章主要为大家详细介绍了小程序实现上传视频功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • JS通过ajax动态读取xml文件内容的方法

    JS通过ajax动态读取xml文件内容的方法

    这篇文章主要介绍了JS通过ajax动态读取xml文件内容的方法,实例分析了Ajax操作XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 防止登录页面出现在frame中js代码

    防止登录页面出现在frame中js代码

    使用frame页面嵌套,重启了服务器的时候会出现登录页面在frame页面中出现,解决方法是在登录页面里面用js判断下当前的地址信息
    2014-07-07
  • 使用JavaScript判断用户输入的是否为正整数(两种方法)

    使用JavaScript判断用户输入的是否为正整数(两种方法)

    在项目开发中,需要使用JavaScript验证用户输入的是否为正整数,下面小编给大家分享两种方法,需要的朋友参考下
    2017-02-02
  • 判断用户的在线状态 onbeforeunload事件

    判断用户的在线状态 onbeforeunload事件

    window.event.clientX和window.event.clientY 将捕捉当前事件发生时鼠标相对与窗口的桌面坐标,通常情况下IE的关闭按钮都会在页面的右上部分,所以点关闭的时候鼠标的坐标的Y坐标一定是小于0的
    2011-03-03
  • ES6之Proxy的get方法详解

    ES6之Proxy的get方法详解

    这篇文章主要介绍了ES6之Proxy的get方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • JS冒泡事件与事件捕获实例详解

    JS冒泡事件与事件捕获实例详解

    这篇文章主要介绍了JS冒泡事件与事件捕获,结合实例形式分析了javascript冒泡的原理与阻止冒泡的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • js几秒以后倒计时跳转示例

    js几秒以后倒计时跳转示例

    使用js实现几秒以后倒计时跳转,这个在某些特殊情况下还是比较实用的,下面为大家介绍下具体的实现步骤,感兴趣的朋友不要错过
    2013-12-12
  • JavaScript字符串操作的四个实用技巧

    JavaScript字符串操作的四个实用技巧

    在制作前端页面的过程中,经常需要用到JavaScript进行逻辑处理,很多时候都需要对字符串进行操作,这篇文章主要给大家介绍了关于JavaScript字符串操作的四个实用技巧,需要的朋友可以参考下
    2021-07-07
  • js图片轮播手动切换特效

    js图片轮播手动切换特效

    这篇文章主要为大家详细介绍了js图片轮播手动切换特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论