微信小程序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 相关文章推荐
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
js post提交调用方法
Feb 12 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
借助javascript代码判断网页是静态还是伪静态
May 05 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
分享jQuery网页元素拖拽插件
Dec 01 Javascript
JQuery中解决重复动画的方法
Oct 17 Javascript
jquery实现点击页面回到顶部
Nov 23 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 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
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP制作万年历
2015/01/07 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
python绘制直线的方法
2018/06/30 Python
python 初始化一个定长的数组实例
2019/12/02 Python
python对一个数向上取整的实例方法
2020/06/18 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
飞利浦美国官网:Philips美国
2020/02/28 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
机电一体化职业规划书
2014/01/07 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
活动宣传策划方案
2014/05/23 职场文书
行政求职信
2014/07/04 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers