微信小程序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 相关文章推荐
新鲜出炉的js tips提示效果
Apr 03 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
Apr 06 Javascript
封装属于自己的JS组件
Jan 27 Javascript
最佳的JavaScript错误处理实践
Jul 16 Javascript
js 获取本地文件及目录的方法(推荐)
Nov 10 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
JavaScript设计模式之代理模式详解
Jun 09 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 Javascript
js实现滑动滑块验证登录
Jul 24 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
咖啡的化学
2021/03/03 咖啡文化
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Python实现ssh批量登录并执行命令
2016/10/25 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
大学生英语演讲稿
2014/04/24 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
社区灵活就业证明
2014/11/03 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
MySQL约束超详解
2021/09/04 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript