微信小程序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 window.event对象详尽解析
Feb 17 Javascript
JavaScript 创建对象
Jul 17 Javascript
jQuery页面滚动浮动层智能定位实例代码
Aug 23 Javascript
JavaScript中函数声明优先于变量声明的实例分析
Mar 01 Javascript
Window.Open如何在同一个标签页打开
Jun 20 Javascript
AngularJS学习笔记之TodoMVC的分析
Feb 22 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
AngularJs  Using $location详解及示例代码
Sep 02 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 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实现网上点歌(二)
2006/10/09 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
使用python实现扫描端口示例
2014/03/29 Python
详细解读Python中的__init__()方法
2015/05/02 Python
windows系统下Python环境搭建教程
2017/03/28 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
基层党组织整改方案
2014/10/25 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python