微信小程序实战之自定义模态弹窗(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
 }
 );
 }
 } 

}) 

运行:

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

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

(0)

相关推荐

  • 微信小程序 滚动到某个位置添加class效果实现代码

    微信小程序滚动到某个位置添加class效果 <scroll-view scroll-y="true" style="height:100vh;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-top="{{scrollY}}"> <view> 假设这里有

  • 微信小程序--onShareAppMessage分享参数用处(页面分享)

    今天下午突然听到群里有人说微信小程序工具更新了,文档也更新了不少内容. 顾不上吃冬至的饺子.我就冲进来了. 先说分享功能,目前真机尚不能调试.开发工具上可以看看效果.后续还会更新. Page()中加上如下代码后在右上角就会出现三个小白点 title:分享的标题. desc:分享一段描述. path:这个参数有点意思.以前在微信中的分享一般都是url.这里是当前页面这里应该是pages/index?id=123这里的id目前还不知道是什么. 也就是说以后你可以在微信中像分享一个网页一样分享一个页面

  • 微信小程序 slider的简单实例

    微信小程序 slider的简单实例 实现效果图: 微信小程序slider应用,可加减的slider控制 <view class="control-w "> <block wx:for="{{controls}}" wx:key="id" wx:for-item="v"> <view class="slide-item"> <view class="item

  • 微信小程序 聊天室简单实现

    微信小程序 聊天室简单实现 utils文件夹下websoctet.js文件 var url = 'ws://地址端口'; function connect(user, func) { wx.connectSocket({ url: url, header: {"content-type":'application/x-www-form-urlencoded'} }); wx.onSocketOpen(function (res) { send('{"type":&q

  • 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传

    今天遇到微信小程序的用户头像设置功能,做笔记. 先上gif: 再上代码: 小demo,代码很简单. 1.index.wxml <!--index.wxml--> <button style="margin:30rpx;" bindtap="chooseimage">获取图片</button> <image src="{{tempFilePaths }}" mode="aspecFill"

  • 微信小程序实战之登录页面制作(5)

    提供一个登录页的案例,供同学们使用 项目效果图: 目录结构: 图片资源: name.png key.png loginLog.jpg login.wxml: <view class="container"> <view class="login-icon"> <image class="login-img" src="../images/loginLog.jpg"></image>

  • 微信小程序 登录的简单实现

    微信小程序 实现登录 最近一段时间,微信小程序在张小龙的8小时演讲下瞬间火了起来,但是呢没火多久,就迅速沉静下去了,我也是不知道张小龙什么想法,但是我想法挺多的,好了,废话说多了,聊一下正题吧,我呢是刚入行的小程序员,一路上采坑不断,别人遇不到的坑基本上踩了一遍,话说我的运气有时候也确实挺爆炸的,小程序一个小登录送给大家, 一.小程序开发前准备 目前在网上的教程已经不计其数了,给大家推荐一个网址: http://www.jb51.net/article/111566.htm 这里面介绍比较详细,

  • 微信小程序 判断手机号的实现代码

    微信小程序 判断是否是手机号 JS实现代码: validatemobile: function (mobile) { if (mobile.length == 0) { wx.showToast({ title: '请输入手机号!', icon: 'success', duration: 1500 }) return false; } if (mobile.length != 11) { wx.showToast({ title: '手机号长度有误!', icon: 'success', dur

  • 微信小程序开发入门基础教程

    微信小程序开发入门基础教程 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果. 开发准备工作获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的"设置"-"开发者设置"中,查看到微信小程序的 AppID 了,注意不可直接使用服务号或订阅号的 AppID . 下载开发工具 下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/dow

  • 微信小程序教程系列之设置标题栏和导航栏(7)

    微信小程序标题栏和导航栏的设置方法,具体内容如下 设置标题栏 标题栏window 在app.json文件里面,通过window对象里面的属性进行设置 示例: app.json: 运行: 设置导航栏 导航栏TabBar 如果我们的小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面. Tip: 通过页面跳转(wx.navigateTo)或者页面重定向(wx.redirect

随机推荐