微信小程序学习之自定义滚动弹窗

微信小程序虽然有三种自带的弹窗,但是毕竟功能有限,有时候难以满足我们的需求,所以我们可以自己尝试制作自定义弹窗,话不多说,直接上图:

微信小程序学习之自定义滚动弹窗

微信小程序学习之自定义滚动弹窗

其中列表部分支持滚动,所以信息承载能力很强。

实现代码:

wxml:

<button class=\"showModal\" bindtap=\"showModal_click\">唤出弹窗</button>
<!--弹窗-->
<view class=\"modal-mask\" bindtap=\"hideModal\" catchtouchmove=\"preventTouchMove\" wx:if=\"{{showModal}}\"></view>
<view class=\"modal-dialog\" wx:if=\"{{showModal}}\">
 <view class=\"modal-title\">标题</view>
 <view class=\"modal-title-sc\">副标题</view>
 <view class=\"modal-content\">
 <scroll-view scroll-y=\"true\" style=\"height:100px;\">
  <block wx:for=\"{{data}}\" wx:key=\"id\">
  <button class=\"info\">
   <view class=\"name_List\">{{item.name}}</view>
   <view class=\"quantity_List\">×{{item.quantity}}</view>
   <view class=\"reason_List\">{{item.message}}</view>
  </button>
  </block>
 </scroll-view>
 </view>
 <view class=\"modal-content-return\">
 此处可随意添加文本内容
 </view>
 <view class=\"modal-footer\">
 <view class=\"btn-cancel\" bindtap=\"onCancel\" data-status=\"cancel\">取消</view>
 <view class=\"btn-confirm\" bindtap=\"onConfirm\" data-status=\"confirm\">确定</view>
 </view>
</view>

wxss:

.showModal{
 position:absolute;
 height:50px;
 left:30%;
 width:40%;
 top:40%;
 background: rgb(95, 228, 83);
 color:#fff;
 font-size: 20px;
}
/*以下全是弹窗样式*/
.modal-mask {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 background: #000;
 opacity: 0.5;
 overflow: hidden;
 z-index: 9000;
 color: #fff;
}
.modal-dialog {
 width: 80%;
 overflow: hidden;
 position: fixed;
 top: 40%;
 left: 0;
 z-index: 9999;
 background: #f9f9f9;
 margin-top: -180rpx;
 margin-left: 10%;
 border-radius: 36rpx;
}
.modal-title {
 padding-top: 30rpx;
 font-size: 20px;
 color: #030303;
 text-align: center;
}
.modal-title-sc {
 padding-top: 10rpx;
 font-size: 15px;
 color: #bebcbc;
 text-align: center;
}
.modal-content {
 padding: 10rpx 32rpx;
}
.info{
 height:30px;
 left:0%;
 text-align: left;
 font-size: 12px;
 color:#bebcbc;
}
.info::after{
 border: 0px;
}
.name_List{
 position:absolute;
 left:0%;
 width:40%;
 text-align: left;
}
.quantity_List{
 position:absolute;
 left:40%;
 width:10%;
 text-align: left;
}
.reason_List{
 position:absolute;
 left:50%;
 width:50%;
 text-align: right;
 overflow: hidden;
}
.modal-content-return{
 padding: 15rpx 32rpx;
 font-size: 15px;
 color: #bebcbc;
}
.modal-footer {
 display: flex;
 flex-direction: row;
 height: 86rpx;
 border-top: 1px solid #dedede;
 font-size: 34rpx;
 line-height: 86rpx;
}
.btn-cancel {
 width: 50%;
 color: #666;
 text-align: center;
 border-right: 1px solid #dedede;
}
.btn-confirm {
 width: 50%;
 color: #ec5300;
 text-align: center;
}

js:

Page({
 data: {
  data:null,
  showModal:false
 },
 onLoad: function () {
  var data=[
   {id:1,name:\"cc\",quantity:2,message:\"爱玩游戏\"},
   {id:2,name:\"ha\",quantity:4,message:\"爱谈恋爱\"},
   {id:3,name:\"lxl\",quantity:6,message:\"爱看电视\"},
   {id:4,name:\"cc\",quantity:2,message:\"爱玩游戏\"},
   {id:5,name:\"ha\",quantity:4,message:\"爱谈恋爱\"},
   {id:6,name:\"lxl\",quantity:6,message:\"爱看电视\"},
  ]
  this.setData({
   data:data
  })
 },
 showModal_click:function(){
  this.setData({
   showModal:true
  })
 },
 //弹窗事件
 hideModal: function () {
  this.setData({
   showModal: false
  });
 },
 onCancel: function () {
  this.hideModal();
 },
 onConfirm: function () {
  this.hideModal();
 }
})

直接拿过去就可以用,data里面的内容可以动态获取

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容