小程序入门(3)-底部弹框与居中弹框的实现

前言

回顾:
小程序入门(1)-项目环境搭建
小程序入门(2)-简单网络框架封装

入门小程序,熟悉了wxml与wxss语法后,还是有一些效果短时间实现不了, 今天写出两种常见的弹框

中间弹框

wxml:



  
  
     //这里面写你自己的弹框布局
     
  
  


在当前wxml最下面加上弹框的布局, 比较重要的是view-mask ,他的wxss属性需要 position: fixed;,具体我们来看一下:

wxcss:
/* 自定义居中弹框------------------- */
.zan-dialog__mask {
  display:  none;
  font-family:PingFangSC-Regular,PingFangSC;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
background:rgba(0,0,0,0.5);

  
}

.zan-dialog__container {

  align-items: center;
  display: flex;
  flex-direction: column;
  position: fixed;
  width: 670rpx;
  height: 522rpx;
top:50%;
left:50%;
transform:translateX(-50%) translateY(-50%);
  background: #ffffff;
  z-index: 40;
  border-radius: 24rpx;
}

.zan-dialog--show .zan-dialog__container {
}

.zan-dialog--show .zan-dialog__mask {
  display: block;
}

.view-mask{
    z-index: 2;
    width: 100vw;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.5)

}

.view-raise-dialog2{
  display: flex;
  flex-direction: column;
  border-radius: 16rpx;
  background: #EEFFE7;
  margin-top: 20rpx;
  height: 174rpx;
  width: 550rpx;
}

.btn-raise-dialog{
  height: 96rpx;
  line-height: 96rpx;
  border-radius: 0rpx 0rpx 24rpx 24rpx;
  width: 100%;
  margin-top: 60rpx;
  background:linear-gradient(90deg,rgba(111,194,49,1) 0%,rgba(160,243,106,1) 100%);
  position: absolute;
  bottom: 0;
  font-size: 32rpx;
  color: #ffffff;
    
}


.zan-dialog__container2 {

  align-items: center;
  display: flex;
  flex-direction: column;
  position: fixed;
  width: 670rpx;
  height: 522rpx;
top:50%;
left:50%;
transform:translateX(-50%) translateY(-50%);
  z-index: 40;
  border-radius: 24rpx;
}
/* --------------------------------------------- */
Js代码:
  /**
     * 页面的初始数据
     */
    data: {
      showCenterrDialog: false,
    },

  /***
     * 中间弹框点击事件
     */
    onClickDialogCenter:function(){

      this.setData({
        showCenterrDialog: !this.data.showCenterrDialog

      })

    },

底部弹框

wxml


wxss
/*底部弹框 ---*/
.modals{position:fixed; z-index: 999; top:0; left: 0; right:0; bottom: 0;}
.modals-cancel{position:absolute; z-index:1000; top:0; left: 0; right:0; bottom: 0; background-color: rgba(0,0,0,.5);}
.bottom-dialog-body{font-family:PingFangSC-Regular,PingFangSC;position:absolute; z-index:10001; bottom:0; left:0; right:0;  height: 1040rpx;  background-color: #fff; border-radius: 16rpx 16rpx 0rpx 0rpx;  display: flex;flex-direction: column; }
/*动画前初始位置*/
.bottom-pos{-webkit-transform:translateY(100%);transform:translateY(100%);}
js文件

    /**
     * 页面的初始数据
     */
    data: {

      hideModal: true, //模态框的状态  true-隐藏  false-显示
    },
    // 显示遮罩层
    showModal: function () {
      var that = this;
      that.setData({
        hideModal: false
      })
      var animation = wx.createAnimation({
        duration: 400,//动画的持续时间 默认400ms   数值越大,动画越慢   数值越小,动画越快
        timingFunction: 'ease',//动画的效果 默认值是linear

      })
      this.animation = animation
      setTimeout(function () {
        that.fadeIn();//调用显示动画
      }, 200)
    },
    // 隐藏遮罩层
    hideModal: function () {
      var that = this;
      var animation = wx.createAnimation({
        duration: 400,//动画的持续时间 默认400ms   数值越大,动画越慢   数值越小,动画越快
        timingFunction: 'ease',//动画的效果 默认值是linear
      })
      this.animation = animation
      that.fadeDown();//调用隐藏动画   
      setTimeout(function () {
        that.setData({
          hideModal: true
        })
      }, 200)//先执行下滑动画,再隐藏模块

    },
    //动画集
    fadeIn: function () {
      this.animation.translateY(0).step()
      this.setData({
        animationData: this.animation.export()//动画实例的export方法导出动画数据传递给组件的animation属性
      })
    },
    fadeDown: function () {
      this.animation.translateY(600).step()
      this.setData({
        animationData: this.animation.export(),
      })
    }, 

希望对大家有所帮助!

你可能感兴趣的:(小程序入门(3)-底部弹框与居中弹框的实现)