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


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 相关文章推荐
JavaScript代码复用模式实例分析
Dec 02 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
javascript制作的简单注册模块表单验证
Apr 13 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
简单实现js页面切换功能
Jan 10 Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
jQuery中 DOM节点操作方法大全
Oct 12 jQuery
js获取html页面代码中图片地址的实现代码
Mar 05 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JavaScript运算符小结
2015/06/03 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
Position属性之relative用法
2015/12/14 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
详解python分布式进程
2018/10/08 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
村委会贫困证明
2014/01/14 职场文书
高中数学教学反思
2014/01/30 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
平安建设实施方案
2014/03/19 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
详解Spring事件发布与监听机制
2021/06/30 Java/Android
灵能百分百第三季什么时候来?
2022/03/15 日漫