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


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 相关文章推荐
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
May 21 Javascript
javascript实现图片切换的幻灯片效果源代码
Dec 12 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
Dec 13 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
extjs 如何给column 加上提示
Jul 29 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
Mar 20 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 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
php获取json数据所有的节点路径
2015/05/17 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
vue中destroyed方法的使用说明
2020/07/21 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python3实现Web网页图片下载
2016/01/28 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
C++面试题目
2013/06/25 面试题
《赵州桥》教学反思
2014/02/17 职场文书
情况说明书格式范文
2014/05/06 职场文书
保护环境建议书400字
2014/05/13 职场文书
总经理检讨书
2014/09/15 职场文书
2016年校长新年寄语
2015/08/17 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android