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


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判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
在JavaScript中操作时间之getMonth()方法的使用
Jun 10 Javascript
理解javascript封装
Feb 23 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
理解Angular的providers给Http添加默认headers
Jul 04 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
Sep 10 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 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
基于mysql的bbs设计(三)
2006/10/09 PHP
paypal即时到账php实现代码
2010/11/28 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
原生js调用json方法总结
2018/02/22 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
农行实习自我鉴定
2013/09/22 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
同学会邀请书大全
2014/01/12 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
开门红主持词
2014/04/02 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python
nginx服务器的下载安装与使用详解
2021/08/02 Servers
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python