本文实例为大家分享了微信小程序自定义支持图片的弹窗,供大家参考,具体内容如下
为index.wxml添加如下图代码: (微信小程序 - canvas层级最高问题,如何超越canvas的层级,只能使用cover-view标签)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!--index.wxml-->
< button class = "show-btn" bindtap = "showDialogBtn" >弹窗</ button >
<!--弹窗-->
< cover-view class = "modal-mask" bindtap = "hideModal" wx:if = "{{modal.isShow}}" ></ cover-view >
< cover-view class = "modal-dialog" wx:if = "{{modal.isShow}}" >
< cover-view class = "modal-title" >{{modal.title}}</ cover-view >
< cover-view class = "modal-content" >
< cover-image src = "{{modal.src}}" class = "img-full" style = "height:auto;" mode = "widthFix" ></ cover-image >
</ cover-view >
< cover-view class = "modal-footer" wx-if = "{{modal.isFooter}}" >
< cover-view class = "btn-cancel" bindtap = "onCancel" data-status = "cancel" >{{modal.cancel}}</ cover-view >
< cover-viewew class = "btn-confirm" bindtap = "onConfirm" data-status = "confirm" >{{modal.ok}}</ cover-viewew >
</ cover-view >
</ cover-view >
|
修改样式文件index.wxss,样式代码如下图所示:
/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
|
.show-btn {
margin-top : 100 rpx;
color : #22cc22 ;
}
.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 : 540 rpx;
overflow : hidden ;
position : fixed ;
top : 50% ;
left : 0 ;
z-index : 9999 ;
background : #f9f9f9 ;
margin : -180 rpx 105 rpx;
border-radius: 36 rpx;
}
.modal-title {
padding-top : 50 rpx;
font-size : 36 rpx;
color : #030303 ;
text-align : center ;
}
.modal-content {
padding : 50 rpx 32 rpx;
}
.modal-input {
display : flex;
background : #fff ;
border : 2 rpx solid #ddd ;
border-radius: 4 rpx;
font-size : 28 rpx;
}
.input {
width : 100% ;
height : 82 rpx;
font-size : 28 rpx;
line-height : 28 rpx;
padding : 0 20 rpx;
box-sizing: border-box;
color : #333 ;
}
input-holder {
color : #666 ;
font-size : 28 rpx;
}
.modal-footer {
display : flex;
flex- direction : row;
height : 86 rpx;
border-top : 1px solid #dedede ;
font-size : 34 rpx;
line-height : 86 rpx;
}
.btn-cancel {
width : 50% ;
color : #666 ;
text-align : center ;
border-right : 1px solid #dedede ;
}
.btn-confirm {
width : 50% ;
color : #ec5300 ;
text-align : center ;
}
|
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
|
//index.js
//获取应用实例
var app = getApp()
Page({
data: {
showModal: false ,
},
onLoad: function () {
},
/**
* 弹窗
*/
showDialogBtn: function () {
this .setData({
showModal: true
})
},
/**
* 弹出框蒙层截断touchmove事件
*/
preventTouchMove: function () {
},
/**
* 隐藏模态对话框
*/
hideModal: function () {
this .setData({
showModal: false
});
},
/**
* 对话框取消按钮点击事件
*/
onCancel: function () {
this .hideModal();
},
/**
* 对话框确认按钮点击事件
*/
onConfirm: function () {
this .hideModal();
}
})
|
运行,可以看到修改样式后的效果
这里有个要特别注意的地方,就是下面这个方法:
1
|
preventTouchMove: function () { }
|
为什么是空方法?因为要结合界面wxml看,蒙层view里有一个事件绑定
1
|
catchtouchmove= "preventTouchMove" 。
|
这养写的原因是阻断事件向下传递,避免在弹窗后还可以点击或者滑动蒙层下的界面。
如果不这样写的话,如果主界面是一个可以滚动的界面,想想看,当弹窗弹出的时候用户还可以操作滚动列表。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_43953710/article/details/103923184