微信小程序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实现的闭包简单实例
Jul 17 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
vue.js实现含搜索的多种复选框(附源码)
Mar 23 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
新手入门js闭包学习过程解析
Oct 08 Javascript
JS实现简易图片自动轮播
Oct 16 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无限分类的类
2007/01/02 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php 文章调用类代码
2011/08/11 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
JS中数据结构之栈
2019/01/01 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
17个Python小技巧分享
2015/01/23 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
python3的输入方式及多组输入方法
2018/10/17 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
迎接领导欢迎词
2014/01/11 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
2014年法院工作总结
2014/11/24 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
在职证明格式样本
2015/06/15 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
zabbix监控mysql的实例方法
2021/06/02 MySQL