微信小程序自定义弹窗滚动与页面滚动冲突的解决方法


Posted in Javascript onJuly 16, 2019

本文为大家分享了微信小程序自定义弹窗滚动与页面滚动冲突的解决方法,供大家参考,具体内容如下

先看效果是否是自己需要的

微信小程序自定义弹窗滚动与页面滚动冲突的解决方法

实现步骤:

1.整个布局用作为根节点包裹所有view,并动态绑定scroll-view的scroll-y属性
2.样式文件中设置Page的overflow-y属性值为hidden
3.样式文件中设置scroll-view的height属性值为100%
4.打开自定义弹窗的点击事件中,更改isScroll的值为false,关闭弹窗的点击事件中,更改isScroll的值为true

JS:

Page({
 /**
  * 页面的初始数据
  */
 data: {
  arrayData: null,
  dialogData: null,
  isDialogShow: false,
  isScroll: true
 },
 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  //构建测试数据
  let data = new Array();
  let dialog = new Array();
  for (let i = 0; i < 25; i++) {
   data[i] = '我是测试-----------' + i;
   dialog[i] = {
    name: '我是弹窗-' + i,
    isSelected: false
   };
  }
  this.setData({
   arrayData: data,
   dialogData: dialog
  });
 },
 /**
  * 显示、关闭弹窗
  */
 showDialog: function (e) {
  var currentStatu = e.currentTarget.dataset.statu;
  console.log('currentStatu:', currentStatu);
  //关闭 
  if (currentStatu == "close") {
   this.setData({
    isDialogShow: false,
    isScroll: true
   });
  }
  // 显示 
  if (currentStatu == "open") {
   this.setData({
    isDialogShow: true,
    isScroll: false
   });
  }
 }
})

wxml:

<button>做点什么</button>
<scroll-view scroll-y="{{isScroll}}"> 
 <view class="rootView">
  <view class="inTable">
   <view wx:for="{{arrayData}}" wx:key="" class="unitItemLeft" bindtap="showDialog" data-statu="open">
    <input class="baseItemWithBorder" value="{{item}}" disabled />
   </view>
  </view>
 </view>
</scroll-view>


<!--测试弹窗--> 
<view class="dialogMarsk" bindtap="showDialog" data-statu="close" wx:if="{{isDialogShow}}"></view> 
 <!--dialog-->
<view class="dialog" wx:if="{{isDialogShow}}">
 <view class="appreciationTitle">
  <text style="font-size:24px;">我是弹窗</text>
 </view>
 <view wx:for="{{dialogData}}" class="appreciationTable">
  <view class="unitItemLeft">
   <text class="baseItemWithBorder">{{item.name}}</text>
  </view>
 </view>
</view>

wxss:

Page {
 position: absolute;
 font-size: 36rpx;
 width: 100%;
 height: 100%;
 display: block;
 background: #FAFAFA;
 overflow-y: hidden;
}
 scroll-view {
 height: 100%;
} 
.rootView{
 /* width: 100%; */
 padding: 10rpx;
 display: flex;
 flex-direction: column;
}
.baseItemWithBorder{
 flex-grow: 1;
 height: 100%;
 padding-left: 20rpx;
 padding-right: 20rpx;
 border-bottom: solid 1rpx gainsboro;
}
.inTable{
 width: 100%;
 display: flex;
 box-shadow:5px 5px 10px gray;
 flex-direction: column;
 margin-top: 40rpx;
 background: white;
}
.inDetail{
 width: 100%;
 height: 80rpx;
 display: flex;
}
.unitLeft{
 justify-content: flex-start;
 padding-left: 20rpx;
}
.unitItemLeft{
 width: 100%;
 height: 80rpx;
 display: flex;
 flex-direction: row;
}
.dialogMarsk { 
 width: 100%; 
 height: 100%; 
 position: fixed; 
 top: 0; 
 left: 0; 
 z-index: 1000; 
 background: rgba(0, 0, 0, 0.6);
 overflow: hidden; 
}
.dialog {
 width: 80%;
 height: 50%; 
 position: fixed; 
 top: 10%;
 z-index: 1001; 
 background: #FAFAFA;
 border-radius: 3px;
 overflow-y: scroll;
}
.appreciationTable{
 width: 98%;
 display: flex;
 flex-direction: column;
 background: white;
 margin: 0 10rpx;
}
.appreciationTitle{
 width: 100%;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 margin-top: 20rpx;
 margin-bottom: 20rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
多种方式实现js图片预览
Dec 12 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
javaScript中封装的各种写法示例(推荐)
Jul 03 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
Vue 实现展开折叠效果的示例代码
Aug 27 Javascript
vue3.0 搭建项目总结(详细步骤)
May 20 Javascript
VUE安装使用教程详解
Jun 03 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
design vue 表格开启列排序的操作
Oct 28 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 #Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
Jul 16 #Javascript
微信小程序-API接口安全详解
Jul 16 #Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 #jQuery
JavaScript解析JSON数据示例
Jul 16 #Javascript
微信小程序 Storage更新详解
Jul 16 #Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 #Javascript
You might like
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
使javascript也能包含文件
2006/10/26 Javascript
javascript之更有效率的字符串替换
2008/08/02 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
Sanic框架流式传输操作示例
2018/07/18 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
大学生就业意向书范文
2014/04/01 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
企业晚会策划方案
2014/05/29 职场文书
企业精神口号
2014/06/11 职场文书
大学专科求职信
2014/07/02 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
php中pcntl_fork详解
2021/04/01 PHP
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Python matplotlib多个子图绘制整合
2022/04/13 Python