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


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 相关文章推荐
[对联广告] JS脚本类
Aug 27 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
May 23 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
使用JSLint提高JS代码质量方法分享
Dec 16 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
JS/HTML5游戏常用算法之追踪算法实例详解
Dec 12 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
Python包和模块的分发详细介绍
2020/06/19 Python
Python进行特征提取的示例代码
2020/10/15 Python
Structs界面控制层技术
2013/10/11 面试题
js实现弹框效果
2021/03/24 Javascript
大学活动总结范文
2014/04/29 职场文书
新闻编辑求职信
2014/07/13 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
环境卫生倡议书
2014/08/29 职场文书
民间借贷借条如何写
2015/05/26 职场文书
好员工观后感
2015/06/17 职场文书
Java spring定时任务详解
2021/10/05 Java/Android