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


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 相关文章推荐
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
Jul 03 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
Apr 06 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
Nov 15 Javascript
node+express制作爬虫教程
Nov 11 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
简单谈谈js的数据类型
Sep 25 Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
Jan 03 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
Apr 18 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
Vue下的国际化处理方法
2017/12/18 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
基于python生成器封装的协程类
2019/03/20 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
幼儿园教师培训制度
2014/01/16 职场文书
三方协议书范本
2014/04/22 职场文书
2015年党员承诺书
2015/01/21 职场文书
民事代理词范文
2015/05/25 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
在项目中使用redis做缓存的一些思路
2021/09/14 Redis