![微信小程序开发零基础入门](https://wfqqreader-1252317822.image.myqcloud.com/cover/511/31794511/b_31794511.jpg)
4.3 基础内容组件
基础内容组件主要包含4种,如表4-10所示。
表4-10 基础内容组件
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T112_90699.jpg?sign=1739296265-nw4x8L1BUl7mShzJMEqTGDNyuIRkBQmz-0-02e7a6ce55d096ae8f7606c3b382c550)
4.3.1 icon
<icon>为图标组件,开发者可以自定义其类型、大小和颜色。该组件对应的属性如表4-11所示。
表4-11 icon组件属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T113_90701.jpg?sign=1739296265-fbqLHjh24vuGXlK7Vv7PCKGE7KvcfSl9-0-f19b8456cac82a7d659d36607518704c)
不同type属性值对应的样式,如表4-12所示。
表4-12 icon组件的type属性值对应的样式
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T113_90702.jpg?sign=1739296265-lwRL4rVkuHRYG3gHOfxa4rJHYgnSrjd6-0-3e4d56952c8a34f857052379b96b1dec)
例如声明一个红色、40像素大小的警告图标,WXML代码如下:
<icon type="warn" size="40" color="red"></icon>
如果有多个图标需要批量生成,可以事先在对应的JS文件中用data记录数据,然后在WXML文件中配合使用<block>标签。
例如依次生成红、黄、蓝色的信息图标,WXML代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P113_90703.jpg?sign=1739296265-xWseL5BaOcld6hjVWKGO2X1LEPzw7lvp-0-2dc49431bc1975f938b46747bfe44c6d)
此时配套的JS代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P113_90704.jpg?sign=1739296265-1WATNKEGUuEuG9coNrXIQGXJKsnrAM0N-0-f1ba320ead44f315d79c7f56beaa17cc)
【例4-6】 基础内容组件icon的简单应用
WXML(pages/demo02/icon/icon.wxml)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_14773.jpg?sign=1739296265-mdNbzKuNSPWaxdJNUpgnN0WdK7k9yAkO-0-9ac09b2913e2493251e5b39b8c6fc71b)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_92462.jpg?sign=1739296265-v3i5Adehbk7oSQmtDTQb3mok2JR2q0Ld-0-a666a2dc12d55efc06f1166ffa926d2f)
JS(pages/demo02/icon/icon.js)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_92465.jpg?sign=1739296265-au2atflfm1jYx1rNdpeCESOaTEFIs8XT-0-c843239cd2a5c153ea0f095ec5b394ec)
运行效果如图4-6所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_14768.jpg?sign=1739296265-p7oZSKHBiQiXy5Gwqi2b9BKMN9d4hUtB-0-b38eb175cd659fd8708078359b086598)
图4-6 基础内容组件icon的简单应用
【代码说明】
本示例在icon.js的data中设置了3个数组,即iconType、iconColor、iconSize,分别用于记录图标的类型、图标的颜色和图标的大小;在icon.wxml中使用<block>标签配合wx:for循环实现批量生成多个标签组件的效果。由图4-6可见,图标的类型、颜色和大小均可以自由变化。
4.3.2 text
text为文本组件,该组件对应的属性如表4-13所示。
表4-13 text组件属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T115_90709.jpg?sign=1739296265-r4HMEm2yA434EELC7WPFBTT0jhfrvRlx-0-e8894b1a2b2d1a75947301b1b2e4c78e)
例如生成一个内容可选的文本组件,代码如下:
<text selectable>这一段测试文本</text>
space属性值的具体介绍如表4-14所示。
表4-14 text组件的space属性值
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T115_90710.jpg?sign=1739296265-egxfmH7IJmMsaL2Apo1aBV7qSTDqHoFv-0-ec11c1b188219b6574458854fe26db9a)
注意事项如下:
(1)decode可以解析的有 、<、>、&、'、 、 。
(2)各个操作系统的空格标准并不一致。
(3)<text/>组件内只支持<text/>嵌套。
(4)除了文本节点以外的其他节点都无法长按选中。
【例4-7】 基础内容组件text的简单应用
WXML(pages/demo02/text/text.wxml)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P115_15037.jpg?sign=1739296265-W7lxpOE91PkVdbNjgf4UvoPaUca6ICmd-0-2a3d1bef6cc308b6f868c6511722d33c)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P115_90711.jpg?sign=1739296265-GLywnzHPoPS7pD8DkuVlROQ7Iv0JiUap-0-772a0717c733604938ce32291447ef9b)
WXSS(pages/demo02/text/text.wxss)的代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P116_90713.jpg?sign=1739296265-8M8Osk4qMDHJUQJZtes8KAHLduLdcm8K-0-ffbd7fd34688361a990a0212b025f3ff)
运行效果如图4-7所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P116_92468.jpg?sign=1739296265-UQPle1qy6xGpQ2i2RIzxOd3uchoybqDZ-0-17f3a23ebda866c4b2f0a214ed41eadb)
图4-7 基础内容组件text的简单应用
【代码说明】
本示例在text.wxml中放置了3组案例,即文本可选、空格显示形式和文本解码。其中,第1组使用selectable属性实现了<text>文本内容可选效果;第2组包含了4个<text>组件,分别用于验证同样的4个连续中文空格的显示效果;第3组包含了两个<text>组件,分别用于验证特殊符号( 、<、>、&、'、 、 )的解码效果。
为了更清晰地显示效果,在text.wxss中为<text>组件设置了内/外边距为15rpx、带有1rpx宽的银色实线边框、块级元素显示以及10号字的样式。
4.3.3 rich-text
<rich-text>为富文本组件,该组件对应的属性如表4-15所示。
表4-15 rich-text组件属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T117_92470.jpg?sign=1739296265-7ggWMSJAvTi99HlIludlWXBeYd8v7Dmc-0-94f2e28b39e91111f84373119dc019b7)
注意:该组件由基础库1.4.0开始支持,低版本需要做兼容处理。
例如在WXML中声明一个富文本组件,代码如下:
<rich-text nodes='{{nodes}}'></rich-text>
其中{{nodes}}为自定义名称的变量,用于定义HTML内容。
如果是用纯字符串(String类型)描述HTML代码,在JS中表示如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P117_90716.jpg?sign=1739296265-1g2kcBBgxn6J5h7BdvSFHkxDgrtXBYQY-0-a5bd011963fdd3c028e78dd3403140a6)
上述代码表示声明一个<div>元素,里面的文字内容是“Hello World!”,并且该元素的行高为60像素(HTML不支持rpx单位,如果使用会无效)、字体为红色。其运行效果如图4-8所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P117_15313.jpg?sign=1739296265-HJMETfufYooLbPZjCAatOJ4kv7hXnABB-0-6b4736d91d0b75e6c517ddd4ba32babf)
图4-8 基础内容组件rich-text的简单应用
需要注意的是,官方声明nodes属性推荐使用Array类型,这是由于<rich-text>组件会将String类型转换为Array类型,所以在内容比较多的时候性能会有所下降。
Array类型目前支持两种节点,分别为元素节点(node)和文本节点(text):支持的事件有tap、touchstart、touchmove、touchcancel、touchend和longtap。
1 元素节点
当type='node'时为元素节点效果,相关属性如表4-16所示。
表4-16 元素节点(type='node')属性一览表
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T117_90715.jpg?sign=1739296265-wDWH5dF76iu4L0p7B0FnIKjNHwlNtIqS-0-81d712a82b9e182dd779c41860c86d91)
注意:元素节点为默认效果,可以省略type类型不写。
2 文本节点
当type='text'时为文本节点效果,相关属性如表4-17所示。
表4-17 文本节点(type='text')属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T118_90717.jpg?sign=1739296265-1x6bF1qf0Mzld4DFtBjoXiz5deX0eUkI-0-a182f178c103ffc0f77d3b54dd2a0ffd)
注意:文本节点不支持样式效果,只用于显示纯文本内容,但可以与元素节点配合使用。
因此,上面的例子可以重新用数组(Array类型)描述,将JS代码改写如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P118_92475.jpg?sign=1739296265-bYjmjeexbuPKdjJcJVSsQiftY5yX1eEm-0-70965f967590507cdc9467ffbd8b684a)
这里将元素节点与文本节点配合使用,使用元素节点的attrs属性声明样式、使用文本节点的text属性声明文字内容,其运行结果与改写前完全一样。需要注意的是,元素节点全局支持class和style属性,但不支持id属性。
上面的示例使用了HTML中的div元素,除此之外还有42个HTML常用标签可以被识别。受信任的HTML节点及其属性如表4-18所示。
表4-18 受信任的HTML节点及其属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T118_90718.jpg?sign=1739296265-7s5fvZpAnJ47ZsPo74v6YPndH0bBtcP2-0-46715583a08499df05af17fca21a6112)
【例4-8】 基础内容组件rich-text的简单应用
WXML(pages/demo02/rich-text/rich-text.wxml)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P119_16176.jpg?sign=1739296265-fS3MDr32DPHJsDqPtmYKxnZDOWRmYvFp-0-fd0601adf3efbffdbb614e58c3db8cfa)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P119_92479.jpg?sign=1739296265-HjwF0bYUebM4kLIoVAKq6ZcOwrltNckJ-0-bc94548341ee9d0b8212e250ecf1a644)
JS(pages/demo02/rich-text/rich-text.js)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P119_92482.jpg?sign=1739296265-u7e2SNm5dA8i66weQdiFn78zVl5s1wuA-0-47dc55cbbd8f325b7cec994f43b6ef14)
WXSS(pages/demo02/rich-text/rich-text.wxss)的代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P120_90728.jpg?sign=1739296265-0NZnFpfIgDNFkyhhJ6SgcLebSYiHxLmg-0-4df1bbbaca956c11a17e9f655f4d9d5d)
运行效果如图4-9所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P120_16448.jpg?sign=1739296265-NKyMohLR3OiKRH4fxwqPmGePdVdN28rz-0-ac55fb405e3b9966025303f36f8dd977)
图4-9 基础内容组件rich-text的简单应用
【代码说明】
本示例在rich-text.wxml中放置了3组案例,即元素节点(使用style样式)、元素节点(使用class样式)和文本节点,均用于实现同一种元素样式(<div>元素、行高60像素、红色加粗字体)。
其中,第1组在JS中使用style属性实现元素样式;第2组在JS中使用class属性自定义myStyle元素样式,并且在WXSS中对myStyle进行完善;第3组直接使用String类型实现元素样式。
由图4-9可见,这3种不同的表述方式可以实现完全一样的运行效果。
4.3.4 progress
progress为进度条组件,该组件对应的属性如表4-19所示。
表4-19 progress组件属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T121_90729.jpg?sign=1739296265-lniJ7BtAUV5R5KctKv9ILOxnL8wp4krI-0-be8a0457ff408e14448566bc58fb476d)
例如声明一个目前正处于80%刻度,并且宽20px的进度条组件,WXML代码如下:
<progress percent="80" stroke-width="20"/ >
【例4-9】 基础内容组件progress的简单应用
WXML(pages/demo02/progress/progress.wxml)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P121_16774.jpg?sign=1739296265-aLQrEDW5e0Y62Tn76v3RtXGUTQ3Oh4Ax-0-b5a553c6be2ec3ec929cdffcfde22eb8)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P121_92484.jpg?sign=1739296265-8sCl2tigVBZWaUo7tSphJjkqgIcl3IYf-0-f2b34e18d5d2c184ff6c03419613dcc7)
运行效果如图4-10所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P122_16784.jpg?sign=1739296265-E2pgMq81DDrHA26dHdNMcdtEsCXNny8h-0-80488e021621f592ed0d57dce413c6d0)
图4-10 基础内容组件progress的简单应用
【代码说明】
本示例依次列举了4种进度条的情况,即进度条右侧显示百分比、线条宽度为20px的进度条、自定义颜色的进度条、带有动画效果的进度条。需要注意的是,用户只能使用activeColor属性来自定义进度条的选中颜色,单独使用color属性将无效。