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


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 相关文章推荐
jquery中prop()方法和attr()方法的区别浅析
Sep 06 Javascript
javascript中expression的用法整理
May 13 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
js控制多图左右滚动切换效果代码分享
Aug 26 Javascript
js运动应用实例解析
Dec 28 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
Dec 03 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
vue-cli之router基本使用方法详解
Oct 17 Javascript
Node 代理访问的实现
Sep 19 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
Jul 26 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
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
javascript 对象的定义方法
2007/01/10 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
面包屑导航详解
2017/12/07 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python中input和raw_input的一点区别
2014/10/21 Python
python递归计算N!的方法
2015/05/05 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
三个Unix的命令面试题
2015/04/12 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
表决心的诗句大全
2014/03/11 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
平安校园建设方案
2014/05/02 职场文书
公司贷款承诺书
2014/05/30 职场文书
火箭队口号
2014/06/18 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
领导欢迎词致辞
2015/01/23 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP