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 相关文章推荐
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 25 Javascript
js实现滑动触屏事件监听的方法
May 05 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
jQuery动态操作表单示例【基于table表格】
Dec 06 jQuery
Vue程序调试的方法
Jun 17 Javascript
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
JavaScript对象原型链原理详解
Feb 05 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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 win下Socket方式发邮件类
2009/08/21 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
Symfony核心类概述
2016/03/17 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
javascript demo 基本技巧
2009/12/18 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python保留小数位的三种实现方法
2020/01/07 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
为什么需要版本控制
2016/10/28 面试题
银行批评与自我批评
2014/02/10 职场文书
综合实践活动方案
2014/02/14 职场文书
小学教师寄语大全
2014/04/03 职场文书
三年级小学生评语
2014/04/22 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
小学校长个人总结
2015/03/03 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2015暑假假期总结
2015/07/13 职场文书
三好学生竞选稿范文
2019/08/21 职场文书