如何使用微信小程序开发一个弹窗页面(附源码)

图片 21

<view>{{item.title}}</view>

在小程序的开发过程中,我们肯定会遇到开发一个弹窗页面的情况,我们先看一下小程序官方对于弹窗页面的解释。API的接口如下

本文转自:

如上代码,如果 title 中有字符串
<b>b</b>,它是否会显示粗体呢?

图片 1

微信小程序的页面跳转,页面之间传递参数笔记.

不会。

从官方给出的代码示例来看,想当简单,就像一个asert,并不能看出弹窗的真实需求。所以今天HTML51.COM就写了一个弹窗小程序教程,供大家学习参考。
首页我们先看一下动态的效果图:

CSDN微信小程序开发专栏,欢迎关注!

图片 2

  先上demo图:

我们首先看到的是首页代码:
<view class=”copyright”>
<view class=”copyright_item”>CopyRight:All Right
Reserved</view>
<view class=”copyright_item”>原创作者:51小程序</view>
<view class=”copyright_item”>微信小程序开发者社区</view>
<view class=”copyright_item”>HTML51.COM</view>
<view class=”copyright_item”><image class=”img”
src=”../copyright/image/logo.png”/></view>
<view class=”goto_counter”><button type=”default”
bindtap=”goto_counter”>点击进入弹窗演示页面</button></view>
</view>

  图片 3

.wxml的代码如下:

 

<view animation=”{{animationData}}” class=”drawer_box”
wx:if=”{{showModalStatus}}”>

为了简化逻辑,所以index.wxml里面只写了两个text.既然是跳转,那就还有其他页面.

<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>

目录如下:

.wxss的代码如下:
.btn {
width: 80%;
padding: 20rpx 0;
border-radius: 10rpx;
text-align: center;
margin: 40rpx 10%;
background: #000;
color: #fff;
}

图片 4

/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; /超出父盒子高度可滚动/
}

[html] view
plain
copy
print?图片 5图片 6

.btn_ok{
padding: 10px;
font: 20px “microsoft yahei”;
text-align: center;
border-top: 1px solid #E8E8EA;
color: #3CC51F;
}

  1. <span style=”font-size:24px;”><!–index.wxml–>    
  2. <view class=”btn-area”>    
  3.   <navigator url=”../navigator/navigator?title=我是navigate” >跳转到新页面</navigator>    
  4.   <navigator url=”../redirect/redirect?title=我是redirect” redirect>在当前页打开</navigator>    
  5. </view></span>  

.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”;
}

图片 7

.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;
}

<!--index.wxml-->  
<view class="btn-area">  
  <navigator url="../navigator/navigator?title=我是navigate" >跳转到新页面</navigator>  
  <navigator url="../redirect/redirect?title=我是redirect" redirect>在当前页打开</navigator>  
</view>

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;}

index.wxml中的URL就是跳转的页面路径.上面代码中就是navigator目录下的navigator页面,title是参数.
navigator下redirect属性是值在当前页打开.如果不加redirect就是跳转到新页面.都可以携带参数.
navigator下redirect属性是值在当前页打开.如果不加redirect就是跳转到新页面.都可以携带参数.

.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 
    } 
  );  
} 

[html] view
plain
copy
print?图片 8图片 9

}

  1. <span style=”font-size:24px;”><!–navigatort.wxml–>    
  2. <view style=”text-align:center”> {{title}} </view></span>  

})

图片 10

如图上述代码你觉得不够,还可以下载源码:
http://bbs.html51.com/t-1342-1-1/

<!--navigatort.wxml-->  
<view style="text-align:center"> {{title}} </view>

在navigatort.wxml中通过js代码可以获取到title,代码如下

//navigatort.js

 

[javascript] view
plain
copy
print?图片 11图片 12

  1. Page({    
  2.   onLoad: function(options) {    
  3.     this.setData({    
  4.       title: options.title    
  5.     })    
  6.   }    
  7. })  

图片 13

Page({  
  onLoad: function(options) {  
    this.setData({  
      title: options.title  
    })  
  }  
})

 

 

[html] view
plain
copy
print?图片 14图片 15

  1. <span style=”font-size:24px;”><!–redirect.wxml–>    
  2. <view style=”text-align:center”> {{title}} </view></span>  

图片 16

<!--redirect.wxml-->  
<view style="text-align:center"> {{title}} </view>

 

[javascript] view
plain
copy
print?图片 17图片 18

  1. <span style=”font-size:24px;”>//redirect.js    
  2. Page({    
  3.   onLoad: function(options) {    
  4.     this.setData({    
  5.       title: options.title    
  6.     })    
  7.   }    
  8. })</span>  

图片 19

//redirect.js  
Page({  
  onLoad: function(options) {  
    this.setData({  
      title: options.title  
    })  
  }  
})

最后上两张跳转后的图.

1.跳转到新页面

图片 20
2.在原来的页面打开

图片 21
有没有发现一个细节,在原来的页面打开是不会出现返回按钮的,而跳转到新页面后会出返回按钮.

这是因为我写了两个页面.如果indexwxml不是一级页面,这里都会出现返回按钮.

当然返回的结果是不一样的:

1.跳转到新页面,返回是回到之前的页面;

2.在原来页面打开,返回是回到上一级页面.

微信开发文档

 

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图