博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动端之模态框滚动穿透问题
阅读量:5043 次
发布时间:2019-06-12

本文共 1096 字,大约阅读时间需要 3 分钟。

  相信各位小伙伴利用H5做移动端应用时,在写弹出层时肯定用到过滚动穿透问题,虽然页面加了背景遮罩,滑动页面时,如若页面滚在滚动条,底部仍然可以滑动。遇到这种问题,第一想到的可能是能否监听弹出层的显示与隐藏,在监听函数中做处理;一般有以下两种处理方式:

  1、禁止body的touchmove事件

1 function handler(e){e.preventDefault();} 2  3 export function closeTouch(){ 4   document.getElementsByTagName("body")[0].addEventListener('touchmove', 5   handler,{passive:false});//阻止默认事件 6 } 7 //启用页面滚动 8 export function openTouch(){ 9    document.getElementsByTagName("body")[0].removeEventListener('touchmove',10    handler,{passive:false});//打开默认事件11 }

  然后再需要用的组件引入使用

1 import { closeTouch, openTouch } from "../utils/util" 2 watch: { 3       '$store.state.menuShow'(val) { 4         if(val) { 5           closeTouch(); 6         }else { 7           openTouch(); 8         } 9       }10     },

  这样写有个弊端,就是页面上所有的touchmove事件都被禁止了,可能导致弹出层本身里的元素内容都不能滑动,下面做了下稍微的修改就可以了

  2、设置body元素overflow:hidden

1 export function closeTouch(){2   document.body.style.overflow = 'hidden';3 }4 //启用页面滚动5 export function openTouch(){6   document.body.style.overflow = 'auto';7 }

直接设置body元素overflow:hidden就好了

 

转载于:https://www.cnblogs.com/gerry2019/p/10319372.html

你可能感兴趣的文章
一个小的日常实践——高速Fibonacci数算法
查看>>
创建与删除索引
查看>>
java的基本数据类型
查看>>
机器学些技法(9)--Decision Tree
查看>>
静态页面复习--用semantic UI写一个10min首页
查看>>
在Windows下安装64位压缩包版mysql 5.7.11版本的方法
查看>>
drf权限组件
查看>>
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
用swing做一个简单的正则验证工具
查看>>
百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转
查看>>
pig自定义UDF
查看>>