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


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 相关文章推荐
无刷新上传文件并返回自定义值
Jun 11 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
js中let和var定义变量的区别
Feb 08 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
vue实现循环滚动列表
Jun 30 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生成静态页面教程
2012/01/10 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
pandas对指定列进行填充的方法
2018/04/11 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
艺术爱好者的自我评价分享
2013/10/08 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
作风转变心得体会
2014/09/02 职场文书
病人慰问信范文
2015/02/15 职场文书
合作与交流自我评价
2015/03/09 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
小组口号霸气押韵
2015/12/24 职场文书
Oracle 多表查询基本语法实例
2022/04/18 Oracle
Python中的socket网络模块介绍
2022/07/23 Python