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


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 EXCEL 操作类代码
Jul 30 Javascript
select多选 multiple的使用示例
Jun 16 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
vue实现购物车的监听
Apr 20 Javascript
解决vue+webpack项目接口跨域出现的问题
Aug 10 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 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原理之异常机制
2010/08/21 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python set集合类型操作总结
2014/11/07 Python
pycharm设置注释颜色的方法
2018/05/23 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
Django配置文件代码说明
2019/12/04 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
Python如何重新加载模块
2020/07/29 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
优秀的应届生自荐信
2014/05/23 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
材料采购员岗位职责
2015/04/03 职场文书
国际贸易实训总结
2015/08/03 职场文书
你会写请假条吗?
2019/06/26 职场文书