![微信小程序开发零基础入门](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=1739532748-MIV3gtUd3qwP3pPLQLljbn7gzjjrDSpv-0-169bf2b2dbb108d373d6ad9ddc8b288a)
4.3.1 icon
<icon>为图标组件,开发者可以自定义其类型、大小和颜色。该组件对应的属性如表4-11所示。
表4-11 icon组件属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T113_90701.jpg?sign=1739532748-KxMntB0KwGaJlZ0WrBv4eHFOlpBCDK1M-0-44535dd1e196f351d5fb2867eb68f89b)
不同type属性值对应的样式,如表4-12所示。
表4-12 icon组件的type属性值对应的样式
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T113_90702.jpg?sign=1739532748-cRdeLdTx60ZsY2Rw06zisEYsDVgVdX9I-0-69be133b130cd49e259449fc6c93fbdd)
例如声明一个红色、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=1739532748-AbGj8TfrH6yzDN9MJZU1oqfW3JTYhDoZ-0-664143ad2c05979de9301899e80c235c)
此时配套的JS代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P113_90704.jpg?sign=1739532748-N8wGaGCOttCrUdZfHsdX7UqdkMQqYo2K-0-5ca755656f17255dbf078146a46a96d7)
【例4-6】 基础内容组件icon的简单应用
WXML(pages/demo02/icon/icon.wxml)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_14773.jpg?sign=1739532748-nXQkWEcKk1yFc51bPf4r6nowvbTFqunE-0-3c39d7a52943bfcdaec154f13554bc78)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_92462.jpg?sign=1739532748-X7nk0aj0dPb8kZOW5q9qeR9d04WVhTO9-0-ceb844b1b1ba9e572c1d94006c2868cc)
JS(pages/demo02/icon/icon.js)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_92465.jpg?sign=1739532748-i2bJFBhjdHJwdjL8PEEeK8c7o08ykvau-0-5753d0b41a88aeb06b147582a4be80e5)
运行效果如图4-6所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P114_14768.jpg?sign=1739532748-ORjmL06lpwA501vf9n28GHfiLee6X4zq-0-3e2f0aa40b56861adcf5373860d2ec7b)
图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=1739532748-fkg0YY1Fr0mPocENdkJ1wGrk7KfI1qY6-0-dcb48f2983482987037b2c7730886ba4)
例如生成一个内容可选的文本组件,代码如下:
<text selectable>这一段测试文本</text>
space属性值的具体介绍如表4-14所示。
表4-14 text组件的space属性值
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T115_90710.jpg?sign=1739532748-YLeRwvrekseg3vOkt5qHANQpg77GmGMZ-0-ab3cef4e7a571440a167fb85c34e5d0f)
注意事项如下:
(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=1739532748-g5uIIZshgtI4RNd6Hfh62nR155RllOmw-0-c4ab597cab44601d86019fafab66b10a)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P115_90711.jpg?sign=1739532748-X6TU4h0pUCKkUdcMEbBlgAdwa4zkyRxe-0-d0d865dcec3e9490fe19b7f8b8be0a3d)
WXSS(pages/demo02/text/text.wxss)的代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P116_90713.jpg?sign=1739532748-TFAkEaLKqwFDRQQ1eEBa1qAxn0rjOc4n-0-96404626b91d52195e2676215323e192)
运行效果如图4-7所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P116_92468.jpg?sign=1739532748-pz7SdzLb6Kqa5M0IQD7lWisj6KOD1u4p-0-bce4dd8c8742a6a0cce9a3cb7852de75)
图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=1739532748-lYHMRNCSNOWK5uaKRF9Cmjnc7LWxPFIS-0-2b9980d1a7225554cd0ac038bf550f75)
注意:该组件由基础库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=1739532748-42Nykt8ze56jqGBmDh0N4Alo1Pu3AXH3-0-6bf979cc6e68ce8c219385331bcf62ef)
上述代码表示声明一个<div>元素,里面的文字内容是“Hello World!”,并且该元素的行高为60像素(HTML不支持rpx单位,如果使用会无效)、字体为红色。其运行效果如图4-8所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P117_15313.jpg?sign=1739532748-CMGpU7Rqk6osG8jRcZIKgnVOUrHcHeMy-0-600efad997e5cc2b472dd4970247db9b)
图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=1739532748-Un8Qp0fjtoH9NaItKeP223ekBZXQuGyp-0-4fc6211245582f92f0972637eba3e07b)
注意:元素节点为默认效果,可以省略type类型不写。
2 文本节点
当type='text'时为文本节点效果,相关属性如表4-17所示。
表4-17 文本节点(type='text')属性
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-T118_90717.jpg?sign=1739532748-W8iV4WPmN1xH8uP4waSGA5AUztO9thu7-0-44d36d6f2aee1879aff71077c86d5581)
注意:文本节点不支持样式效果,只用于显示纯文本内容,但可以与元素节点配合使用。
因此,上面的例子可以重新用数组(Array类型)描述,将JS代码改写如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P118_92475.jpg?sign=1739532748-0a1YT91nv7cIYoQvAvNk5uPm8aJhhlwL-0-2f33d9af1121f47bf67c442d207eb76e)
这里将元素节点与文本节点配合使用,使用元素节点的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=1739532748-FsGnCgHNPbg9j7cbvN1P9eJB9a80JZWK-0-158a85aebe9d506bc27e2efb7b05d550)
【例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=1739532748-pA5xo2X0oDsXbZiaF2ZSgLLhEHe4JWko-0-f2c15aced663a11278f9011876a61131)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P119_92479.jpg?sign=1739532748-mwQuQStxQMYueMuvH4jrGVDObf3rwD5K-0-3d3c22c4efe1ea0488c8fcd0c65be460)
JS(pages/demo02/rich-text/rich-text.js)的代码片段如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P119_92482.jpg?sign=1739532748-h723sL3FOxJupx6TGXo0VR95bOkdUaa3-0-a26c369c459f6933e2151a562ecfc47b)
WXSS(pages/demo02/rich-text/rich-text.wxss)的代码如下:
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P120_90728.jpg?sign=1739532748-F3F2eLhnU4ouSm8AqqJ1QNvETp36hSoK-0-70c6ecc46ea2f6880d94fc669671f2bb)
运行效果如图4-9所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P120_16448.jpg?sign=1739532748-6UJW19OpCrYHL8u2yMjxyjp6lSTQV1W9-0-24f0e17f5646f6c7f740830920a1c396)
图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=1739532748-BCKeeNcnaW5Ypwsx6C11Za6hvXPylLgQ-0-25e540874ae67c96185815ef7e288064)
例如声明一个目前正处于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=1739532748-t8hzYGWB44NaBQ82VczBiChdAA5AKqtM-0-ec560474be6c814354ad4970ad2b9cdc)
视频讲解
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P121_92484.jpg?sign=1739532748-keq7DRLGqbMazHirCHTLq1A0VrvexPRc-0-08a9d503f8c4ae602feef4c2c922c248)
运行效果如图4-10所示。
![](https://epubservercos.yuewen.com/9F9C46/17214368805516706/epubprivate/OEBPS/Images/Figure-P122_16784.jpg?sign=1739532748-0DyuNX3q3N1rkMk7g5qvhtd3OyMKrNjR-0-c52072e25fed5f9b2bf12b26999e0b9b)
图4-10 基础内容组件progress的简单应用
【代码说明】
本示例依次列举了4种进度条的情况,即进度条右侧显示百分比、线条宽度为20px的进度条、自定义颜色的进度条、带有动画效果的进度条。需要注意的是,用户只能使用activeColor属性来自定义进度条的选中颜色,单独使用color属性将无效。