vue 解决mintui弹窗弹起来,底部页面滚动bug问题


Posted in Javascript onNovember 12, 2020

经过dom层层注释缩小反馈终于找到问题所在。

问题经过

我在弹起弹窗的时候,设置了popupVisible为true

然后触发了vue的updated生命周期钩子函数

然后我在这个函数里面做了去this.$refs.container.offsetHeight导致页面重绘

然后就导致了底部页面向上滚动

解决办法

去掉updated函数里面的重绘方法

补充知识:项目总结之关于vue中使用mint-ui的mt-popup出现滚动穿透问题的解决总结

说实话,使用Mint-ui这个ui组件的过程中遇到了很多问题,这个ui组件问题真多。

先说今天的主题吧,我在使用popup选择框的时候和datepicker时间选择器的时候出现了滚动穿透的问题,特别是在ios上面。

找了好多方法,最后同事给出了一个好的方法,很简洁,于是就想着总结下来。

防止滚动穿透 只需加入@touchmove.native.stop.prevent 阻止默认根元素的默认事件就可以了,native是关键,这个表示根元素的意思,也就是body或者html

代码如下:

Popup组件:

<mt-popup
     v-model="popupVisible"
     position="bottom">
     ...
  </mt-popup>
  // 防止滚动穿透 只需加入@touchmove.native.stop.prevent 阻止默认根元素的默认事件就可以了native是关键,这个表示根元素的意思,也就是body或者html
  <mt-popup
   v-model="popupVisible"
   position="bottom"
   @touchmove.native.stop.prevent>
   ...
  </mt-popup>

注意当mt-popup中还有div等子元素的时候,一定要注意,这个时候可能会有一些问题,会出现mt-popup这个元素也滚动不了的情况,所以说如果mt-popup本身不需要滚动的话,加了@touchmove.native.stop.prevent,底部页面就不会跟着滑动,如果mt-popup里面有滚动条需要滚动的话,可能就滚动不了,这个时候需要采取常规方法了,如下:

// 解决方式,通过监听popupVisible变量,在弹窗出现后禁止body节点touchMove事件,弹窗消失后恢复body节点的touchMove事件

//html 如下
   <mt-popup
     v-model="popupVisible"
     position="bottom">
     ...
   </mt-popup>
  // js 如下
  const handler = function(e) {
    e.preventDefault();
  }
  
  // vue实例内
  watch: {
    popupVisible: function (val) {
     if(val) {
       document.getElementsByTagName('body')[0].addEventListener('touchmove', this.handler, { passive: false });
     } else {
       document.getElementsByTagName('body')[0].removeEventListener('touchmove', this.handler, { passive: false });
     }
    }
  }

Datetime Picker:

<mt-datetime-picker
    ref="picker"
    type="time"
    v-model="pickerValue"
    @touchmove.native.stop.prevent>
 </mt-datetime-picker>

对于时间组件加了@touchmove.native.stop.prevent,选择时间滚动的时候底部页面就不会跟着滚动了,很完美。

@touchmove.native.stop.prevent可以使我们省好多事,用起来吧!

以上这篇vue 解决mintui弹窗弹起来,底部页面滚动bug问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 事件对象属性小结
Apr 27 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
jQuery实现跨域iframe接口方法调用
Mar 14 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
Layer弹出层动态获取数据的方法
Aug 20 Javascript
细说webpack6 Babel的使用详解
Sep 26 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
JavaScript函数柯里化
Nov 07 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 #Javascript
详解ES6 扩展运算符的使用与注意事项
Nov 12 #Javascript
在vue中使用image-webpack-loader实例
Nov 12 #Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 #Javascript
JavaScript ES 模块的使用
Nov 12 #Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 #Javascript
vue 解决provide和inject响应的问题
Nov 12 #Javascript
You might like
php printf输出格式使用说明
2010/12/05 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
javascript css float属性的特殊写法
2008/11/13 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
python try 异常处理(史上最全)
2019/03/07 Python
python实现银行实战系统
2020/02/26 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Python解析微信dat文件的方法
2020/11/30 Python
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
母亲节感恩寄语
2014/02/21 职场文书
刮痧观后感
2015/06/05 职场文书
青春雷锋观后感
2015/06/10 职场文书
在校学生证明格式
2015/06/24 职场文书
施工安全协议书
2016/03/22 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
详解python的异常捕获
2022/03/03 Python
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏