微信小程序自定义弹窗实现详解(可通用)


Posted in Javascript onJuly 04, 2019

本文为自定义弹窗,该内容可满足如下需求:

  • 自定义各种布局弹窗
  • 点击弹窗布局外消失弹窗
  • 弹出弹窗时背景阴影半透明
  • 各方向弹出效果(本文为自下而上弹出)

话不多说,先上图看效果:

微信小程序自定义弹窗实现详解(可通用)

点击昵称旁边的编辑按钮

微信小程序自定义弹窗实现详解(可通用)

弹出自定义弹窗

上图是我自己拙劣的审美自定义的一个编辑弹窗,因为重点是自定义弹窗,所以在下文的通用代码中我就去掉了这些布局,剩下填充部分由读者自行填充。

下面上代码,老规矩,还是微信小程序对应的几个文件的代码,可直接贴到页面里用的哦。
.wxml 文件中 直接放到wxml的最底部就行了,十分简练。

<view class="zan-dialog {{ showDialog ? 'zan-dialog--show' : '' }}">
 <view class="zan-dialog__mask" bindtap="toggleDialog" />
 <view class="zan-dialog__container">
  <view style='padding:100rpx;'>此处是填充的布局代码</view>
 </view>
</view>

.wxss 文件中 直接放进去就行,根据注释可自行调节弹框带不带阴影。

.zan-dialog__mask {
 position: fixed;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 z-index: 10;
 background: rgba(0, 0, 0, 0);//设置阴影半透明背景如: background: rgba(0, 0, 0, 0.4);
 display: none;
}

.zan-dialog__container {
 position: fixed;
 bottom: 400rpx;
 width: 650rpx;//弹窗布局宽
 height: 350rpx;//弹窗布局高,与下面弹出距离transform有关
 margin-left: 50rpx;
 background: #f8f8f8;
 transform: translateY(300%);//弹框弹出距离,与弹框布局高度有关,如300%表示弹起距离为3倍弹窗高度
 transition: all 0.4s ease;
 z-index: 12;
 border-radius: 20rpx;
 box-shadow: 0px 3px 3px 2px gainsboro;//弹框的悬浮阴影效果,如不需要可注释该行
}

.zan-dialog--show .zan-dialog__container {
 transform: translateY(0);
}

.zan-dialog--show .zan-dialog__mask {
 display: block;
}

.js 文件中 处理弹框弹出消失逻辑,以及自定义弹窗里的业务逻辑。

Page({
 data: {
  showDialog: false
 },

 /**
 * 控制 pop 的打开关闭
 * 该方法作用有2:
 * 1:点击弹窗以外的位置可消失弹窗
 * 2:用到弹出或者关闭弹窗的业务逻辑时都可调用
 */
 toggleDialog() {
  this.setData({
   showDialog: !this.data.showDialog
  });
 },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
Oct 15 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
May 09 Javascript
浅谈Vue.use的使用
Aug 29 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
Sep 27 Javascript
vue-cli 首屏加载优化问题
Nov 06 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 #Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 #Javascript
vue-cli配置flexible过程详解
Jul 04 #Javascript
vue动态配置模板 'component is'代码
Jul 04 #Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 #Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 #jQuery
小程序中canvas的drawImage方法参数使用详解
Jul 04 #Javascript
You might like
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
python 制作网站小说下载器
2021/02/20 Python
小学生操行评语大全
2014/04/22 职场文书
小学课外活动总结
2014/07/09 职场文书
环保项目建议书
2014/08/26 职场文书
运动会表扬稿范文
2015/05/05 职场文书
Python os和os.path模块详情
2022/04/02 Python
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
Spring 使用注解开发
2022/05/20 Java/Android
MySQL主从切换的超详细步骤
2022/06/28 MySQL