微信小程序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 相关文章推荐
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
jQuery DOM操作实例
Mar 05 Javascript
js获取url中&quot;?&quot;后面的字串方法
May 15 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
JS中promise化微信小程序api
Apr 12 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
vue 实现路由跳转时更改页面title
Nov 05 Javascript
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
使用jQuery实现购物车
Oct 29 jQuery
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中用文本文件做数据库的实现方法
2008/03/27 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python中class的定义及使用教程
2019/09/18 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
学习Python爬虫的几点建议
2020/08/05 Python
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
用友笔试题目
2016/10/25 面试题
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
健康教育评估方案
2014/05/25 职场文书
格林童话读书笔记
2015/06/30 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
GPU服务器的多用户配置方法
2022/07/07 Servers