微信小程序組件解讀和分析:十一、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一模一樣才生效)

點擊查看原文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM