微信小程序scroll-view实现滚动穿透和阻止滚动的方法


Posted in Javascript onAugust 20, 2018

scroll-view滚动穿透,阻止滚动

页面弹窗阻止滚动是一种常见的问题,这里简单介绍小程序scroll-view的一种解决方式

常用阻止滚动方式

在不使用scroll-view的弹窗中, 为position为absolute或fixed的元素设置catchtouchmove空事件就可以阻止弹窗下的页面因事件穿透滚动

<view catchtouchmove="doNothing"></view>

也可直接写catchtouchmove,相当于绑定了事件名为true的事件

问题场景

在小程序中,在absolute或fixed的类弹窗布局中。要显示列表、长文本段落等可滚动元素,必须使用scroll-view组件,无法阻止页面本身的滚动

解决办法

既然无法简单的阻止事件穿透,就在页面可滚动的元素本身想想办法:

页面滚动元素

小程序中的简单布局,在页面内容超出一屏时,滚动的元素是page

如何让页面不滚动

将page的高度设为100%,页面最外层放一个view,打开弹窗时通过一个class增加样式,设页面高度100%,overflow: hidden来停止滚动

打开弹窗时设isStopBodyScroll为true,关闭时设为false

<view class="{{isStopBodyScroll ? 'scroll-lock' : ''}}">
 <!-- 页面内容 -->
</view>
.scroll-lock {
 height: 100%;
 overflow-y: hidden;
}

存在的问题

这样设置页面会回到顶部,期待有更好的解决方式或官方对这个问题提供支持

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自己整理的一个javascript日期处理函数
Oct 16 Javascript
javascript间隔刷新的简单实例
Nov 14 Javascript
jquery遍历json对象集合详解
May 18 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
Jun 01 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
如何使用 vue + d3 画一棵树
Dec 03 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
Jun 24 Javascript
vue 实现走马灯效果
Oct 28 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 Javascript
Angular6 写一个简单的Select组件示例
Aug 20 #Javascript
Layer弹出层动态获取数据的方法
Aug 20 #Javascript
layui 给数据表格加序号的方法
Aug 20 #Javascript
解决LayUI表单获取不到data的问题
Aug 20 #Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 #Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
Aug 19 #Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 #Javascript
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
PHP安全下载文件的方法
2016/04/07 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
学习YUI.Ext基础第一天
2007/03/10 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
岗位说明书范文
2014/05/07 职场文书
表彰大会策划方案
2014/05/13 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
幽默导游词开场白
2015/05/29 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python