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


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 相关文章推荐
可以文本显示的公告栏的js代码
Mar 11 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
修改jquery中dialog的title属性方法(推荐)
Aug 26 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
微信小程序左滑删除实现代码实例
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 VS ASP
2006/10/09 PHP
解析php中const与define的应用区别
2013/06/18 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
Python中的字典遍历备忘
2015/01/17 Python
使用python实现个性化词云的方法
2017/06/16 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python递归函数实例讲解
2019/02/27 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
英文商务邀请信
2014/01/22 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
晚会闭幕词
2015/01/28 职场文书
2015年财政局工作总结
2015/05/21 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python