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


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 相关文章推荐
用javascript实现给图片加链接
Aug 15 Javascript
JS操作JSON要领详细总结
Aug 25 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
JavaScript使用focus()设置焦点失败的解决方法
Sep 03 Javascript
JavaScript中使用Callback控制流程介绍
Mar 16 Javascript
javascript检测两个数组是否相似
May 19 Javascript
canvas实现钟表效果
Feb 13 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
js+canvas实现纸牌游戏
Mar 16 Javascript
vue实现购物车的监听
Apr 20 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 dirname()与__FILE__常量的应用
2013/06/24 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
如何快速上手Vuex
2017/02/14 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python实现爬取图书封面
2018/07/05 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
python yield关键词案例测试
2019/10/15 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
python求解汉诺塔游戏
2020/07/09 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
简单租房协议书范本
2014/08/20 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android