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


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 相关文章推荐
Ucren Virtual Desktop V2.0
Nov 07 Javascript
javascript动画浅析
Aug 30 Javascript
JSON格式化输出
Nov 10 Javascript
jQuery对象的selector属性用法实例
Dec 27 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
vue项目前端错误收集之sentry教程详解
May 27 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 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
CURL状态码列表(详细)
2013/06/27 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
vue二级路由设置方法
2018/02/09 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python switch 实现多分支选择功能
2020/12/21 Python
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
体检通知范文
2015/04/21 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS