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 相关文章推荐
Javascript 多浏览器兼容总结(实战经验)
Oct 30 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
JS设置cookie、读取cookie
Feb 24 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
May 24 Javascript
浅谈js中的in-for循环
Jun 28 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
js时间戳与日期格式之间相互转换
Dec 11 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
Element InfiniteScroll无限滚动的具体使用方法
Jul 27 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 10 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 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取整的几种方式
2013/06/25 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
Python实现的下载网页源码功能示例
2017/06/13 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
tensorflow的计算图总结
2020/01/12 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Python如何解除一个装饰器
2020/08/07 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
中英文自我评价常用句型
2013/12/19 职场文书
展会邀请函范文
2014/01/26 职场文书
报告会主持词
2014/04/02 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
泰山导游词
2015/02/02 职场文书