微信小程序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对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
Nov 05 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
Dec 04 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
webpack-dev-server自动更新页面方法
Feb 22 Javascript
js中el表达式的使用和非空判断方法
Mar 28 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
利用JS响应式修改vue实现页面的input值
Sep 02 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 Javascript
在webstorm中配置less的方法详解
Sep 25 Javascript
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
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及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
Python中集合类型(set)学习小结
2015/01/28 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python bytes string相互转换过程解析
2020/03/05 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
PHP如何与mysql建立链接
2013/05/05 面试题
幼儿园开学家长寄语
2014/01/19 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
业绩考核岗位职责
2014/02/01 职场文书
小小的船教学反思
2014/02/21 职场文书
消防安全宣传口号
2014/06/10 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
父亲去世追悼词
2015/06/23 职场文书
Python WSGI 规范简介
2021/04/11 Python
golang 实现菜单树的生成方式
2021/04/28 Golang
pytorch中[..., 0]的用法说明
2021/05/20 Python
利用Python实现模拟登录知乎
2022/05/25 Python