解决微信小程序中的滚动穿透问题


Posted in Javascript onSeptember 16, 2019

Mask-Scroll

> 原码地址 *

蒙层防穿透问题

> 蒙层穿透就是,当你用fixed 布局让蒙层显示的时候, 手指滑动屏幕会出现底部内容也滑动的现象. 如图:

解决微信小程序中的滚动穿透问题

当蒙层出现的时候,你滚动屏幕,底部内容也一起跟着滚动。 这就是蒙层穿透, 也可以叫 '滚动穿透'. 当然出现这种情况, 用户体验当然是不好的了。 所以作为一个有点追求的工程师当然是不允许这种情况的发生了(手动狗头...)

解决微信小程序中的滚动穿透问题

## 解决方案

这种要分情况,

  • 当蒙层没有滚动条的时候。
  • 当蒙层出现滚动条的时候

1. 当弹窗没有滚动条的时候。

直接监听 catch:touchmove 方法, 然后直接返回就可以了。

代码可以去看fixed 目录下的文件

主要代码:

*// wxml*
 <view 
​ class="fixed-mask"
​ bind:tap="hideMsak"
​ wx:if="{{isShowMask}}"
​ catch:touchmove="stopMove">
​ <view class="mask-container" >
​  <view class="mask__item">
​  I am {{dogName}}
​  </view>
​ </view>
 </view>
 *// css*
 .fixed-mask {
 position: fixed;
 left: 0;
 top: 0;
 height: 100vh;
 width: 100vw;
 background: #333;
 opacity: 0.8;
 z-index: 2;
}
.mask-container {
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
}
.mask__item {
 margin: 0 auto;
 background-color: #ff0015;
 text-align: center;
 width: 500rpx;
 height: 500rpx;
 line-height: 500rpx;
 margin-bottom: 20rpx;
}
*// js*
 stopMove () {
​ return;
 }

效果如下:

解决微信小程序中的滚动穿透问题

上面是当弹窗没有滚动条的情况, 当弹窗出现滚动条的时候。

哦豁, 完蛋, 弹窗不能滚动了。

2. 当弹窗有滚动条的时候

方法一:

动态给底部滚动的元素 添加固定定位。也就是当出现弹窗的时候添加一个 class 样式类

效果如图:

解决微信小程序中的滚动穿透问题

代码在scroll1 文件夹。

*// css* 

.bottom-fixed {

 position: fixed;

 left: 0;

 top: 0;

 overflow: hidden;

}

*// wxml*

 <view class="dog-container {{isShowMask ? 'bottom-fixed' : ''}}"></view>

大家可以看到 因为底部元素给固定到页面顶部了, 而不是你点击弹窗时出现的位置。目前自己还没有找到解决方法。 如果大佬有会的, 不吝赐教。。

*方法二:*

> scroll-view 设置高度 以及纵向滚动方向。

不过scroll-view 会有一些bug

详情查看

代码在scrooll 文件夹

效果如下图:

解决微信小程序中的滚动穿透问题

总结

以上所述是小编给大家介绍的解决微信小程序中的滚动穿透问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
浅析js中的浮点型运算问题
Jan 06 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
jquery+css实现下拉列表功能
Sep 03 jQuery
浅谈React和Redux的连接react-redux
Dec 04 Javascript
用ES6写全屏滚动插件的示例代码
May 02 Javascript
vue实现点击关注后及时更新列表功能
Jun 26 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
node 解析图片二维码的内容代码实例
Sep 11 Javascript
微信小程序左滑删除实现代码实例
Sep 16 #Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 #Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 #Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 #Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 #Javascript
layui使用templet格式化表格数据的方法
Sep 16 #Javascript
layui监听单元格编辑前后交互的例子
Sep 16 #Javascript
You might like
基于mysql的bbs设计(二)
2006/10/09 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python Tkinter的图片刷新实例
2019/06/14 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
土木工程生产实习心得体会
2016/01/22 职场文书
初中语文教学反思范文
2016/03/03 职场文书
详解JS数组方法
2021/11/20 Javascript
redis 解决库存并发问题实现数量控制
2022/04/08 Redis