首頁 > 軟體

微信小程式自定義可捲動的彈出框

2022-07-06 18:01:54

本文範例為大家分享了微信小程式自定義可捲動彈出框的具體程式碼,供大家參考,具體內容如下

最近在寫一個裝修的活動,規則是點選按鈕彈出加上相應的動畫。

首先我們需要一個按鈕觸發顯示(如圖,點選詳細規則顯示規則模態框,圖二右邊的卷軸在手機上不顯示)

思路:小程式自己的模態框不能寫樣式,這是個比較尷尬的情況,這是一個比較小白的解決方案:

在前端寫一個視窗,預設讓它隱藏

我這邊是用showModel來控制,預設給它false,當點選規則按鈕是將showModel的值改為true,點選關閉按鈕將showModel的值改為false

小程式前端程式碼(這是觸發按鈕)

<!-- 詳細規則 -->
  <view style='width:190rpx;height:70rpx;margin-left:76%;padding-top:44%'>
    <button class='form_button'bindtap="openrule">
      <image src='/images/act03.png'style='width:180rpx;height:60rpx;'></image>
      <text class='block font15 white center' decode="{{true}}"  style='width:180rpx;height:60rpx; margin-left:5%; margin-top:-53%;letter-spacing:3rpx;'>詳細規則&gt;</text>
    </button>
</view>

小程式前端程式碼(這是模態框),內含關閉按鈕(這裡是給text一個點選事件當做關閉按鈕)

<view class='tip-content-dialog' wx:if="{{showModal}}">
  <text class='dialogClose block tc font24 white' bindtap='closerule'>×</text>
  <scroll-view class="tip-dialog-view tc bg_rule p_all15 p_b20" scroll-y='true' style='height:85%;padding:30rpx;'>
      <text class='block font26 white tc'style='padding-top:10rpx;'>活動規則</text>
      <view class='p_all10 tj lineH_m'>
        <text class='block font17 white tl'decode="{{true}}" style='padding-top:10rpx;'>活動時間&ensp;:</text>
        <text class='block font15 white tl'style='padding-top:10rpx;padding-left:0rpx;'>{{activity_time}}</text>
        <text class='block font17 white tl'style='padding-top:20rpx;'decode="{{true}}">活動說明&ensp;:</text>
        <text class='block font15 white tj'style='padding-top:10rpx;padding-left:0rpx;'>{{activity_rule}}</text>
      </view>
  </scroll-view>
</view>

js

data: {
    showModal: false,
  },
 
onLoad: function (options) {
    var that = this;
    //活動規則
    wx.request({
      url: app.d.hostUrl + 'activity.activityConf', //此處是你的介面
      data: {
      },
      success: function (res) {
        //console.log(res.data);  //介面中拿到的資料
        var activity_time = res.data.activity_time;
        var activity_rule = res.data.activity_rule;
        //規則資料顯示
        that.setData({
          activity_time: activity_time,
          activity_rule: activity_rule,
        });
      }
    })
  },
 
 // 活動詳細規則
  openrule: function () {
    this.setData({   //開啟規則模組
      showModal: true
    });
  },
  closerule: function () {
    this.setData({   //關閉規則模組
      showModal: false
    });
  },

樣式(樣式中為了美觀加了彈出動畫,可直接使用):

/* 覆蓋button樣式 */
button.form_button{
  background-color:transparent;
  padding:0;
  margin:0;
  display:inline;
  position:static;
  border:0;
  padding-left:0;
  padding-right:0;
  border-radius:0;
  /* font-size:0rpx; */
  color:transparent;
}
button.form_button::after{
  content:'';
  width:0;
  height:0;
  -webkit-transform:scale(1);
  transform:scale(1);
  display:none;
  background-color:transparent;
}
 
.tip-content-dialog{
  position: fixed;
  display: flex;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0,0,0,.5);
  z-index: 99999;
}
 
.tip-content-dialog .tip-dialog-view{
  width: 80%;
  margin: auto;
  border-radius: 25rpx;
  vertical-align: middle;
  animation: tanchu 400ms ease-in;
  /* overflow: hidden; */
  padding: 20rpx; 
}
 
.tip-content-dialog .btn{
  background: #f2f7fa;
}
@keyframes tanchu{
  from{
    transform: scale(0,0);
    -webkit-transform: scale(0,0);
  }
  to{
    transform: scale(1,1);
    -webkit-transform: scale(1,1);
  }
}
 
.tip-content-dialog .dialogClose{
  position: absolute;
  right:20rpx;
  top: 10rpx;
  width: 60rpx;
  height: 60rpx;
  line-height: 60rpx;
  text-align: center;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com