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


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实现浏览器菜单命令
Sep 05 Javascript
很酷的javascript loading效果代码
Jun 18 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
Javascript技术栈中的四种依赖注入小结
Feb 27 Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
php获取mysql版本的几种方法小结
2008/03/25 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
php DES加密算法实例分析
2019/09/18 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
Python贪心算法实例小结
2018/04/22 Python
python实现简易内存监控
2018/06/21 Python
Django工程的分层结构详解
2019/07/18 Python
python下载库的步骤方法
2019/10/12 Python
python 实现让字典的value 成为列表
2019/12/16 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
人力资源管理专业学生自我评价
2013/11/20 职场文书
事业单位请假制度
2014/01/13 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
建议书格式
2015/02/04 职场文书
2015年组织部工作总结
2015/04/03 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript