微信小程序开发弹窗页面的方法详细介绍与解读

why 32 2024-09-24

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

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

我们首先看到的是首页代码:

1

2

3

4

5

6

7

8

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

当然了,重点不在于此。
index.wxml的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<!--使用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>

index.wxss的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

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

}

    

-{

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

index.js的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

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

        }

      ); 

    }

  }

    

})



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信支付开发中刷卡支付实例的详细解析
下一篇:微信小程序实现图片预览功能的代码详细介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~