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方法和技巧大全
Dec 27 Javascript
javascript获得CheckBoxList选中的数量
Oct 27 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
Mar 07 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
vue+web端仿微信网页版聊天室功能
Apr 30 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使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
Three.js基础部分学习
2017/01/08 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
python 远程统计文件代码分享
2015/05/14 Python
Python中函数参数调用方式分析
2018/08/09 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
什么是组件架构
2016/05/15 面试题
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
上班打牌检讨书
2014/02/07 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
元宵节寄语大全
2015/02/27 职场文书
前台岗位职责范本
2015/04/16 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android