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 相关文章推荐
用JS实现一个页面多个css样式实现
May 29 Javascript
jquery-syntax动态语法着色示例代码
May 14 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
jquery实现多次上传同一张图片
Jan 09 Javascript
js实现PC端和移动端刮卡效果
Mar 27 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
Vue实现购物车详情页面的方法
Aug 20 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 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 array 的加法操作代码
2010/07/24 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
JS实现分页导航效果
2020/02/19 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python树莓派红外反射传感器
2019/01/21 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python3.8下载及安装步骤详解
2020/01/15 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
作弊检讨书范文
2015/05/06 职场文书
工作简报怎么写
2015/07/21 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL