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


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图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
Jun 02 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
js 数据存储和DOM编程
Feb 09 Javascript
Jquery获取radio选中的值
May 05 jQuery
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
对angularjs框架下controller间的传值方法详解
Oct 08 Javascript
小程序分享模块超级详解(推荐)
Apr 10 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 16 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
服务器web工具 php环境下
2010/12/29 PHP
php中动态调用函数的方法
2015/03/16 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
Python合并多个装饰器小技巧
2015/04/28 Python
Python变量访问权限控制详解
2019/06/29 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
python如何删除列为空的行
2020/07/17 Python
长青弘远的面试题
2012/06/09 面试题
电信专业毕业生推荐信
2013/11/18 职场文书
测绘工程个人的自我评价
2013/11/23 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
电子商务个人自荐信
2013/12/12 职场文书
技能竞赛活动方案
2014/02/21 职场文书
三八活动策划方案
2014/08/17 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技