youzan_vant使用记录_van-picker

1,820 阅读1分钟

近日在使用youzan/vant时,在微信客户端v7.0.5 ,ios系统v10.3.x 环境下遇到 van-picker弹出不能滚动且body会滚动,疑似穿透现象

解决思路:

1.去官方github论坛寻找问题Issues记录,了解情况:github.com/youzan/vant…

2.经过一番排查,得出以下几种改进方案

2.1 解决body滚动穿透问题
问题原因
  HTML5触摸事件touchmove事件:当手指在屏幕上滑动的时候会连续地触发,
  所以当激活出组件Popup组件弹出层时,我们在弹层选择内容时上下连续滑动是会触发该事件
  
 解决思路 
 在弹出层出现之后阻止body的touchmove事件,在弹层消失之后移除阻止事件

废话不多说,直接出代码:

watch:{
 'is_show_bank_list'(val){
    if(val){
      document.getElementsByTagName('body')[0].addEventListener('touchmove',this.popHandler,{passive:false})
    }else{
      document.getElementsByTagName('body')[0].removeEventListener('touchmove',this.popHandler,{passive:false})
    } 
  }
}

2.2 解决van-picker不能滚动问题,添加全局样式处理

<style>
     van-picker-column {  position: relative;  z-index: 1; }
     van-picker-column::before {  width: 100%; height: 100%; position: absolute; top: 0;  left: 0; content: ''; } 
    van-picker-column ul{z-index: -1; position: relative;}
</style>

2.3 以上调整均失败,请看这里

这是之前使用van-picker时遇到的问题,不知道最近有赞有没有修复这个问题,我先把之前解决过的思路记录一下。