微信小程序组件解读和分析:十一、label标签

label标签组件说明:

label标签,与html的label标签基本一样。label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,就会自动将焦点转到和标签绑定的表单控件上,主要用来改进表单组件的可用性。
使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件。
for优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。
目前可以绑定的控件有:<button/>, <checkbox/>, <radio/>, <switch/>

 

组件用法示例代码的效果如下:

技术分享

 

 


其中的WXML代码:

 

[XML] 
纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
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
<
view
class
=
"content"
>
  
<
text
class
=
"section__title"
>-------label绑定checkbox(内嵌)-------</
text
>
  
<
checkbox-group
bindchange
=
"checkboxChange"
>
    
<
view
class
=
"label-1"
wx:for
=
"{{checkboxItems}}"
>
      
<
label
>
        
<
checkbox
hidden
value
=
"{{item.name}}"
checked
=
"{{item.checked}}"
></
checkbox
>
        
<
view
class
=
"label-1__icon"
>
          
<
view
class
=
"label-1__icon-checked"
style
=
"opacity:{{item.checked ? 1: 0}}"
></
view
>
        
</
view
>
        
<
text
class
=
"label-1__text"
>{{item.value}}</
text
>
      
</
label
>
    
</
view
>
  
</
checkbox-group
>
</
view
>
<
view
class
=
"content"
>
  
<
text
class
=
"section__title"
>---------label绑定radio(for)---------</
text
>
  
<
radio-group
class
=
"group"
bindchange
=
"radioChange"
>
    
<
view
class
=
"label-2"
wx:for
=
"{{radioItems}}"
>
      
<
radio
id
=
"{{item.name}}"
hidden
value
=
"{{item.name}}"
checked
=
"{{item.checked}}"
></
radio
>
      
<
view
class
=
"label-2__icon"
>
        
<
view
class
=
"label-2__icon-checked"
style
=
"opacity:{{item.checked ? 1: 0}}"
></
view
>
      
</
view
>
      
<
label
class
=
"label-2__text"
for
=
"{{item.name}}"
><
text
>{{item.name}}</
text
></
label
>
    
</
view
>
  
</
radio-group
>
</
view
>
<
view
class
=
"content"
>
  
<
text
class
=
"section__title"
>-----------label绑定button-----------</
text
>
  
<
label
for
=
"buttontest"
>label绑定button(for)</
label
>
  
<
button
id
=
"buttontest"
bindtap
=
"testLabelBindButton_1"
>Fly-1</
button
>
  
<
label
>
    
<
text
>label绑定button(内嵌)</
text
>
    
<
button
bindtap
=
"testLabelBindButton_2"
>Fly-2</
button
>
  
</
label
>
</
view
>
<
view
class
=
"content"
>
  
<
text
class
=
"section__title"
>-----------label绑定switch-----------</
text
>
  
<
view
>
    
<
label
for
=
"switchtest"
>label绑定switch( for)</
label
>
    
<
switch
id
=
"switchtest"
checked/>
  
</
view
>
  
<
view
>
    
<
label
>
      
<
text
>label绑定switch(内嵌)</
text
>
      
<
switch
/>
    
</
label
>
  
</
view
>
    
<
view
>
    
<
label
>
      
<
text
>label绑定switch(内嵌)</
text
>
      
<
switch
/>
      
<
switch
/>
      
<
switch
/>
    
</
label
>
  
</
view
>
</
view
>

其中的JS代码如下:

[JavaScript] 
纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
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
Page({
  
data: {
    
checkboxItems: [
      
{name:
‘ctrip‘
, value:
‘携程‘
, checked:
‘true‘
},
      
{name:
‘qunar‘
, value:
‘去哪儿‘
},
      
{name:
‘tuniu‘
, value:
‘途牛‘
}
    
],
    
radioItems: [
      
{name:
‘ctrip‘
, value:
‘携程‘
},
      
{name:
‘qunar‘
, value:
‘去哪儿‘
, checked:
‘true‘
},
      
{name:
‘tuniu‘
, value:
‘途牛‘
}
    
],
    
hidden:
false
  
},
  
checkboxChange:
function
(e) {
    
var
checked = e.detail.value
    
var
changed = {}
    
for
(
var
i = 0; i <
this
.data.checkboxItems.length; i ++) {
      
if
(checked.indexOf(
this
.data.checkboxItems[i][i].name) !== -1) {
        
changed[
‘checkboxItems[‘
+i+
‘].checked‘
] =
true
      
}
else
{
        
changed[
‘checkboxItems[‘
+i+
‘].checked‘
] =
false
      
}
    
}
    
this
.setData(changed)
  
},
  
radioChange:
function
(e) {
    
var
checked = e.detail.value
    
var
changed = {}
    
for
(
var
i = 0; i <
this
.data.radioItems.length; i ++) {
      
if
(checked.indexOf(
this
.data.radioItems.name) !== -1) {
        
changed[
‘radioItems[‘
+i+
‘].checked‘
] =
true
      
}
else
{
        
changed[
‘radioItems[‘
+i+
‘].checked‘
] =
false
      
}
    
}
    
this
.setData(changed)
  
},
  
testLabelBindButton_1:
function
(){
    
console.log(
"奔走相告,button通过for可以绑定成功啦!!!"
);
  
},
  
testLabelBindButton_2:
function
(){
    
console.log(
"奔走相告,button通过内嵌可以绑定成功啦!!!"
);
  
}
})

其中的WXSS代码如下

[CSS] 
纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
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
.label
-1
, .label
-2
{
    
margin-bottom
:
15px
;
}
.label
-1
__text, .label
-2
__text {
    
display
: inline-
block
;
    
vertical-align
:
middle
;
}
.label
-1
__icon {
    
position
:
relative
;
    
margin-right
:
10px
;
    
display
: inline-
block
;
    
vertical-align
:
middle
;
    
width
:
18px
;
    
height
:
18px
;
    
background
:
#CAE1FF
;
}
.label
-1
__icon-checked {
    
position
:
absolute
;
    
top
:
3px
;
    
left
:
3px
;
    
width
:
12px
;
    
height
:
12px
;
    
background
:
#1aad19
;
}
.label
-2
__icon {
    
position
:
relative
;
    
display
: inline-
block
;
    
vertical-align
:
middle
;
    
margin-right
:
10px
;
    
width
:
18px
;
    
height
:
18px
;
    
background
:
#CAFF70
;
    
border-radius:
50px
;
}
.label
-2
__icon-checked {
    
position
:
absolute
;
    
left
:
3px
;
    
top
:
3px
;
    
width
:
12px
;
    
height
:
12px
;
    
background
:
#1aad19
;
    
border-radius:
50%
;
}
.section__title{
  
display
:
block
;
  
text-align
:
center
;
  
color
:
#9400D3
;
}
.content{
  
padding-bottom
:
15px
;
}


主要属性:

 

属性
类型
类型
for String 绑定控件的 id(该id和需要被绑定的表单控件的id一模一样才生效)

点击查看原文