微信小程序虽然有三种自带的弹窗,但是毕竟功能有限,有时候难以满足我们的需求,所以我们可以自己尝试制作自定义弹窗,话不多说,直接上图:
其中列表部分支持滚动,所以信息承载能力很强。
实现代码:
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
暂无评论内容