前言

之前有个项目是运行在移动端Web,和微信H5中,由于默认的弹窗UI不太好看,而且还不统一,所以页面需要自定义弹窗,添加icon、提示信息、操作按扭等样式。

问题描述:

如果在页面内容的高度超过了可视区就会出滚动条,这时触发示显弹窗就会出现页面的穿透事件,在弹窗上滑动时 或 弹窗中还可以滑动时滑动,这时底层原页面也会跟着滑动,并且如果刚好点击到底层原页面的某个功能按扭也会触发其事件。

解决办法:

1、使用fastclick.js插件库,下载地址:https://www.bootcdn.cn/fastclick

2、自建代码,在打开自定义弹窗时触发事件(取消事件默认动作),禁止底层滚动(使其没有滚动条),而在关闭自定义弹窗时,再还原其动作即可。

弹窗CSS样式布局:

这里只给出背景层和弹窗的样式,其他如icon、提示、操作按扭等,可根据项目需求自定义!

.alert-box{position: fixed; top: 0; right: 0; bottom: 0;left: 0; display: flex; justify-content: center; align-items: center;background: rgba(255, 255, 255, 0.8);z-index: 1024;
}.alert-box .alert{overflow-x: hidden;overflow-y: auto;-webkit-overflow-scrolling: touch;transition: all 1s cubic-bezier(.79,-0.54,.31,1.44);
}

弹窗触发对应JS事件:

注:如果要用在 Angular.js、React.js Vue.js中,只需按照其对应的语法改造即可!

// 取消事件的默认动作
function scroll(event) {var evt = event || window.event;evt.preventDefault();
} // 打开自定义弹窗时show()
function show() {document.body.style.overflow = 'hidden';document.body.style.position = 'fixed';document.body.style.width = '100%';document.addEventListener("touchmove", scroll, false);
};// 关闭自定义弹窗时close()
function close() {document.body.style.overflow = 'initial';document.body.style.position = 'initial';document.removeEventListener("touchmove", scroll, false);
};// 在微信小程序中类似情况,只需在自定义弹窗元素上添加如下指令即可
fixed="true" catchtouchmove="true" 

微信H5、移动端自定义弹窗事件穿透、底层页面滑动解决方案相关推荐

  1. 【微信小程序】自定义弹窗蒙版输入框效果图完整代码

    [微信小程序]自定义弹窗文本输入框效果图&完整代码 效果图 在输入框中进行内容的输入 点击确认后在姓名一栏进行更新修改 点击返回后姓名一栏不做任何修改 在这个的基础上你可以自定义任何弹窗 wx ...

  2. 微信h5支付在iframe弹窗的坑

    官方接入文档 参考链接: 微信H5支付遇到的坑 微信H5支付iframe在苹果Safari的问题 在苹果Safari浏览器通过iframe唤起微信或支付宝APP支付 遇到的问题 网络环境未能通过安全验 ...

  3. 解决小程序自定义弹窗滚动穿透问题

    在小程序页面里有自定义弹窗时候,希望弹框里的scroll-view可以动,底部背景页面不要动 方法一.catchtouchmove="true" 可以实现弹框背景不滚动,但是也会导 ...

  4. H5移动端实现左右滑屏切换页面

    项目中需要实现的一个需求是顶部有一个tab选择框,点选某一个tab的时候切换页面,并且支持手势滑动,左滑右滑可以同点选tab一样切换页面. 根据项目中选用的ui组件cube-ui为基准查看了一下可实现 ...

  5. jQuery 效果——显示隐藏/滑动/淡入淡出/自定义动画||事件切换——简洁版滑动下拉菜单

    jQuery 效果 显示隐藏效果 <!DOCTYPE html> <html lang="en"><head><meta charset= ...

  6. css3层级穿透,css页面滑动穿透的两种解决办法

    这篇文章主要介绍了css如何防止页面滑动穿透,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 问题描述: 移动端当有 fixed 遮罩背景和弹出层时,在屏幕上滑动能够滑动背 ...

  7. 微信小程序 - vant popup弹出层阻止底层页面滑动

    前言 在小程序编写过程当中使用使用vant weapp的popup组件作小程序的弹出层,触屏致使底层页面跟着滑动.web 解决方法 使用touch事件阻止属性,@touchmove.stop.prev ...

  8. 微信H5移动端真机调试--vConsole

    在移动端实际开发中,还是会碰到一些棘手的bug,想看看到底哪里出了问题,苦于移动端不能F12啊.友好的微信给我们提供了这么一个入口,使开发者可以真机调试.给微信开发者点赞.然后就可以看到你打印的内容及 ...

  9. 微信公众号扫码关注并打开指定页面的解决方案

    文章背景 在微信中,打开app下载链接,或者使用微信扫一扫app下载二维码,都是无法下载app的.因为腾讯为了自身利益,屏蔽了其他app直接在微信中下载. 而访问指定网页的链接在微信内分享转发次数多了 ...

最新文章

  1. 任务感知单目深度估计的3D目标检测
  2. java 获取字符串长度_ava练习实例:java字符串长度与Java String charAt() 方法 (建议收藏)...
  3. orcal 数据库密码修改(表密码,sys密码,system密码)
  4. Oracle操作数据库常用名命令(set linesize,pagesize,conn命令,feedback命令)
  5. R 脚本读取汇总 Excel 表格数据
  6. [bzoj4994][Usaco2017 Feb]Why Did the Cow Cross the Road III_树状数组
  7. [转]邵雍其诗、其人、其事
  8. AtCoder Grand Contest 004 C - AND Grid(思路题)
  9. 软件工程导论(第5版)张海藩著 高清PDF版下载
  10. Python得到字符的阿斯克码值 chr ord
  11. python列表相加
  12. anaconda清华镜像源使用
  13. c++我的世界小游戏
  14. Endnot引文格式设置随笔
  15. 安卓直播间websocket协议破解还原
  16. 将示波器数据传入电脑用matlab作FFT
  17. 名编辑电子杂志大师教程 | 如何直接输出安卓apk格式?
  18. S1到S9,545名职业选手,有多少人折戟全球总决赛?
  19. 国内外物联网和AI平台
  20. 恒生电子实习记录-2

热门文章

  1. 【伊利丹】Hadoop-2.5.0-CDH5.2.0/Hive与Hbase整合实验
  2. 读《熵减 华为活力之源》
  3. 华为USG6000系统进入诊断视图调节风扇转速配置
  4. 淘宝系统 B2C电子商务系统UML建模 范例
  5. 课上——HTML 表格 学生成绩表
  6. ssh2项目之自己想的购物网站
  7. C语言编程求解圆盘的汉诺塔,课内资源 - 基于80x86汇编的汉诺塔
  8. 切断ADG的关联,划分为两个独立的数据库
  9. 完美的实现九宫格锁屏
  10. 九宫格解锁Android代码