全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

微信小程序实战之自定义模态弹窗(8)

先看看官方提供的模态弹窗,供大家参考,具体内容如下

api如下:

示例:

这样的模态弹窗,充其量只能做个alert,提示一下信息。
但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法

wxml:

<!--button--> 
<view class="btn" bindtap="powerDrawer" data-statu="open">button</view> 
 
<!--mask--> 
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view> 
<!--content--> 
<!--使用animation属性指定需要执行的动画--> 
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}"> 
 
 <!--drawer content--> 
 <view class="drawer_title">弹窗标题</view> 
 <view class="drawer_content"> 
 <view class="top grid"> 
 <label class="title col-0">标题</label> 
 <input class="input_base input_h30 col-1" name="rName" value="可自行定义内容"></input> 
 </view> 
 <view class="top grid"> 
 <label class="title col-0">标题</label> 
 <input class="input_base input_h30 col-1" name="mobile" value="110"></input> 
 </view> 
 <view class="top grid"> 
 <label class="title col-0">标题</label> 
 <input class="input_base input_h30 col-1" name="phone" value="拒绝伸手党"></input> 
 </view> 
 <view class="top grid"> 
 <label class="title col-0">标题</label> 
 <input class="input_base input_h30 col-1" name="Email" value="仅供学习使用"></input> 
 </view> 
 <view class="top bottom grid"> 
 <label class="title col-0">备注</label> 
 <input class="input_base input_h30 col-1" name="bz"></input> 
 </view> 
 </view> 
 <view class="btn_ok" bindtap="powerDrawer" data-statu="close">确定</view> 
</view> 

wxss:

/*button*/ 
.btn { 
 width: 80%; 
 padding: 20rpx 0; 
 border-radius: 10rpx; 
 text-align: center; 
 margin: 40rpx 10%; 
 background: #000; 
 color: #fff; 
} 
 
/*mask*/ 
.drawer_screen { 
 width: 100%; 
 height: 100%; 
 position: fixed; 
 top: 0; 
 left: 0; 
 z-index: 1000; 
 background: #000; 
 opacity: 0.5; 
 overflow: hidden; 
} 
 
/*content*/ 
.drawer_box { 
 width: 650rpx; 
 overflow: hidden; 
 position: fixed; 
 top: 50%; 
 left: 0; 
 z-index: 1001; 
 background: #FAFAFA; 
 margin: -150px 50rpx 0 50rpx; 
 border-radius: 3px; 
} 
 
.drawer_title{ 
 padding:15px; 
 font: 20px "microsoft yahei"; 
 text-align: center; 
} 
.drawer_content { 
 height: 210px; 
 overflow-y: scroll; /*超出父盒子高度可滚动*/ 
} 
 
.btn_ok{ 
 padding: 10px; 
 font: 20px "microsoft yahei"; 
 text-align: center; 
 border-top: 1px solid #E8E8EA; 
 color: #3CC51F; 
} 
 
.top{ 
 padding-top:8px; 
} 
.bottom { 
 padding-bottom:8px; 
} 
.title { 
 height: 30px; 
 line-height: 30px; 
 width: 160rpx; 
 text-align: center; 
 display: inline-block; 
 font: 300 28rpx/30px "microsoft yahei"; 
} 
 
.input_base { 
 border: 2rpx solid #ccc; 
 padding-left: 10rpx; 
 margin-right: 50rpx; 
} 
.input_h30{ 
 height: 30px; 
 line-height: 30px; 
} 
.input_h60{ 
 height: 60px; 
} 
.input_view{ 
 font: 12px "microsoft yahei"; 
 background: #fff; 
 color:#000; 
 line-height: 30px; 
} 
 
input { 
 font: 12px "microsoft yahei"; 
 background: #fff; 
 color:#000 ; 
} 
radio{ 
 margin-right: 20px; 
} 
.grid { display: -webkit-box; display: box; } 
.col-0 {-webkit-box-flex:0;box-flex:0;} 
.col-1 {-webkit-box-flex:1;box-flex:1;} 
.fl { float: left;} 
.fr { float: right;} 

js:

Page({ 
 data: { 
 showModalStatus: false 
 }, 
 powerDrawer: function (e) { 
 var currentStatu = e.currentTarget.dataset.statu; 
 this.util(currentStatu) 
 }, 
 util: function(currentStatu){ 
 /* 动画部分 */ 
 // 第1步:创建动画实例 
 var animation = wx.createAnimation({ 
 duration: 200, //动画时长 
 timingFunction: "linear", //线性 
 delay: 0 //0则不延迟 
 }); 
 
 // 第2步:这个动画实例赋给当前的动画实例 
 this.animation = animation; 
 
 // 第3步:执行第一组动画 
 animation.opacity(0).rotateX(-100).step(); 
 
 // 第4步:导出动画对象赋给数据对象储存 
 this.setData({ 
 animationData: animation.export() 
 }) 
 
 // 第5步:设置定时器到指定时候后,执行第二组动画 
 setTimeout(function () { 
 // 执行第二组动画 
 animation.opacity(1).rotateX(0).step(); 
 // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象 
 this.setData({ 
 animationData: animation 
 }) 
 
 //关闭 
 if (currentStatu == "close") { 
 this.setData( 
 { 
 showModalStatus: false 
 } 
 ); 
 } 
 }.bind(this), 200) 
 
 // 显示 
 if (currentStatu == "open") { 
 this.setData( 
 { 
 showModalStatus: true 
 } 
 ); 
 } 
 } 
 
}) 

运行:

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

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


# 微信小程序  # 模态弹窗  # 微信小程序常用的3种提示弹窗实现详解  # 微信小程序实现自定义modal弹窗封装的方法  # 微信小程序实现自定义picker选择器弹窗内容  # 微信小程序实现漂亮的弹窗效果  # 微信小程序vant弹窗组件的实现方式  # 微信小程序自定义弹窗实现详解(可通用)  # 微信小程序用户授权弹窗 拒绝时引导用户重新授权实现  # 微信小程序 弹窗自定义实例代码  # 微信小程序自定义模态弹窗组件详解  # 微信小程序实现底部弹窗  # 第一组  # 模态  # 仅供  # 较高  # 采用了  # 做个  # 写了  # 自定义  # 并不能  # 它来  # 小编  # 具体内容  # 时长  # 大家多多  # 程序开发  # label  # title  # top  # grid  # input_base 


相关文章: 上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  浅谈Javascript中的Label语句  用v-html解决Vue.js渲染中html标签不被解析的问题  济南网站建设制作公司,室内设计网站一般都有哪些功能?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  如何在香港服务器上快速搭建免备案网站?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  建站之星如何一键生成手机站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何在IIS中新建站点并配置端口与物理路径?  如何在IIS中新建站点并配置端口与IP地址?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何将凡科建站内容保存为本地文件?  招商网站制作流程,网站招商广告语?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  长沙做网站要多少钱,长沙国安网络怎么样?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何选择美橙互联多站合一建站方案?  家具网站制作软件,家具厂怎么跑业务?  c# 在ASP.NET Core中管理和取消后台任务  如何通过宝塔面板实现本地网站访问?  Python文件管理规范_工程实践说明【指导】  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  北京制作网站的公司,北京铁路集团官方网站?  如何在阿里云香港服务器快速搭建网站?  建站168自助建站系统:快速模板定制与SEO优化指南  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建站主机功能解析:服务器选择与快速搭建指南  网站制作公司排行榜,四大门户网站排名?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何在Windows 2008云服务器安全搭建网站?  青岛网站建设如何选择本地服务器?  如何高效生成建站之星成品网站源码?  广州建站公司哪家好?十大优质服务商推荐  如何快速生成ASP一键建站模板并优化安全性?  网站制作话术技巧,网站推广做的好怎么话术?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何在IIS7上新建站点并设置安全权限?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  如何快速登录WAP自助建站平台?  如何在腾讯云免费申请建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。