【愚公系列】《微信小程序与云开发从入门到实践》016-基础功能组件
| 标题 | 详情 | 
|---|---|
| 作者简介 | 愚公搬代码 | 
| 头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 | 
| 近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 | 
| 博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 | 
| 欢迎 | 👍点赞、✍评论、⭐收藏 | 
🚀前言
在微信小程序的开发旅程中,基础功能组件是构建应用的基石。这些组件不仅提供了常见的用户交互功能,还帮助开发者快速实现丰富的应用场景。无论是按钮、输入框,还是导航栏、列表等,这些基础组件的合理运用都能大大提升用户体验和开发效率。
本篇文章将深入探讨微信小程序的基础功能组件,详细介绍它们的特性、使用方法以及最佳实践。我们将结合实际案例,帮助你理解如何灵活运用这些组件,以满足不同的业务需求和用户期望。
所谓功能组件,是指为页面提供功能支持的基础组件。通过容器组件将功能组件进行包装即可扩展出更复杂的自定义组件。常用的功能类组件有文本标签、图标、进度条、按钮、选择框、选择器等,每种功能组件都有其特定的属性与切样式。
无论你是小程序开发的新手,还是希望进一步优化应用的资深开发者,这篇文章都将为你提供实用的技巧和深入的理解。让我们一起探索微信小程序的基础功能组件,打造出更具吸引力和实用性的小程序吧!
🚀一、基础功能组件
基础功能组件是指UI样式简单一般不会有太多交互功能的组件,包括icon(图标)组件、progress(进度条)组件、text(文本)组件与rich-text(富文本)组件。
🔎1.icon 组件的应用
在页面开发时,图标组件(icon)经常用于显示一些常见提示,例如告知用户操作成功时显示一个绿色的“对号”图标,或者告知用户操作异常时显示一个红色的“叹号”图标。这些常用的图标已经内置于小程序开发框架中,可以直接使用 icon 组件。
示例代码:
在示例工程中的 pages 文件夹下新建一个名为 iconDemo 的页面,并在 icon.wxml 文件中编写以下示例代码:
<!-- pages/iconDemo/iconDemo.wxml -->
<view>成功样式图标: <icon type="success" size="30"></icon></view>
<view>提示样式图标: <icon type="info" size="30"></icon></view>
<view>无圆对号样式图标: <icon type="success_no_circle" size="30"></icon></view>
<view>警告样式图标: <icon type="warn" size="30"></icon></view>
<view>等待样式图标: <icon type="waiting" size="30"></icon></view>
<view>取消样式图标: <icon type="cancel" size="30"></icon></view>
<view>下载样式图标: <icon type="download" size="30"></icon></view>
<view>搜索样式图标: <icon type="search" size="30"></icon></view>
<view>清除样式图标: <icon type="clear" size="30"></icon></view>
图标类型及效果:
- 
成功样式图标:
type="success",表示成功。 - 
提示样式图标:
type="info",表示提示。 - 
无圆对号样式图标:
type="success_no_circle",表示成功,但没有圆圈。 - 
警告样式图标:
type="warn",表示警告。 - 
等待样式图标:
type="waiting",表示等待。 - 
取消样式图标:
type="cancel",表示取消。 - 
下载样式图标:
type="download",表示下载。 - 
搜索样式图标:
type="search",表示搜索。 - 
清除样式图标:
type="clear",表示清除。 
运行效果:
运行代码后,页面将展示不同类型的图标,效果如下图(假设是图4-1)。每个图标的大小均为30px,展示了不同的状态提示图标。

icon 组件可配置的属性有3个,如表所示。
| 属性名 | 类型 | 意义 | 
|---|---|---|
| type | 字符串 | 设置图标的类型,可选值如下:success、success_no_circle、info、warn、waiting、cancel、download、search、clear | 
| size | 数值 | 设置图标的大小 | 
| color | 字符串 | 设置图标的颜色 | 
🔎2.progress 组件的应用
progress 是一种进度条组件,在实际页面开发中,有很多场景会使用到进度条组件。例如视频播放的进度,下载任务的进度等。progress 组件提供了许多可配置的属性,支持显示百分比进度、播放进度动画等。
在 pages 文件夹下新建一个名为 progressDemo 的页面,在 progressDemo.wxml 文件中编写如下代码:
<!--pages/progressDemo/progressDemo.wxml-->
<view><progress percent="20" show-info stroke-width="3"/></view>
<view><progress percent="40" active stroke-width="6" show-info/></view>
<view><progress percent="60" active stroke-width="9" show-info/></view>
<view><progress percent="80" color="blue" active stroke-width="12" show-info border-radius="6"/></view>
运行代码,效果如图所示。

可以发现,页面首先加载时,进度条会以动画的方式前进到指定的进度。相比 icon 组件,progress 组件的可配置属性较多,如表所示。
| 属性名 | 类型 | 意义 | 
|---|---|---|
| percent | 数值 | 当前进度条的百分比 | 
| show-info | 布尔值 | 设置在进度条右侧是否显示百分比 | 
| border-radius | 数值或字符串 | 设置进度条的圆角大小 | 
| font-size | 数值或字符串 | 设置进度条右侧百分比数字的字体大小 | 
| stroke-width | 数值或字符串 | 设置进度条线的宽度 | 
| color | 字符串 | 设置进度条颜色 | 
| activeColor | 字符串 | 设置进度条条激活部分的颜色 | 
| backgroundColor | 字符串 | 设置未激活部分的进度条颜色 | 
| active | 布尔值 | 设置是否显示进度条从左到右的动画进度 | 
| active-mode | 字符串 | 设置动画的播放类型,包括以下两种类型:backwards:动画从头播放 forwards:动画从上次结束的地方播放 | 
| duration | 数值 | 设置进度增加 1% 动画所需的时间,默认为 30ms | 
| bindactiveend | 函数 | 设置动画播放完成的回调 | 
🔎3.text 组件的应用
text 是一种用来展示文本的组件。其本身使用非常简单,当我们新建一个页面时,默认生成的模板中就带有一个 text 组件,如下所示:
<!--pages/textDemo/textDemo.wxml-->
<text user-select>文本示例</text>
text 组件可配置的属性如表所示。
表 text 组件的属性
| 属性名 | 类型 | 意义 | 
|---|---|---|
| user-select | 布尔值 | 文本是否支持选中 | 
| space | 字符串 | 设置空格字符的大小,可设置为:ensp:半角空格,emsp:全角空格,nbsp:半角不换行的空格 | 
| decode | 布尔值 | 设置是否对文本进行解码 | 
decode 属性用来设置是否对文本进行解码操作,支持解码的字符如表所示。
表decode 属性支持的解码字符
| 字符 | 意义 | 
|---|---|
| 半角不断行空格符 | |
| < | 小于号 | 
| > | 大于号 | 
| & | “&” 符号 | 
| ' | “’” 符号 | 
| 半角空格 | |
| 全角空格 | 
还有一点需要注意,text 组件内部只允许嵌套 text 组件。
🔎4.rich-text 组件的应用
在小程序中,rich-text 组件可以用来渲染富文本内容。下面是两个示例,其中一个是使用字符串渲染富文本,另一个是使用描述 Node 节点的对象来渲染富文本。
🦋4.1 示例 1:使用字符串渲染富文本
- 在 
pages/textDemo/textDemo.wxml文件中编写以下代码: 
<!--pages/textDemo/textDemo.wxml-->
<rich-text nodes="{{html}}"></rich-text>
- 在 
textDemo.js文件中定义一个字符串html: 
// pages/textDemo/textDemo.js
Page({
  data: {
    html: `<div>
             <h1>标题</h1>
             <p class="p">正文段落<i>斜体</i> <b>粗体</b>.</p>
           </div>`
  }
});
运行代码,效果如图所示。

🦋4.2 示例 2:使用描述 Node 节点的对象渲染富文本
- 修改 
textDemo.wxml文件中的代码如下: 
<!--pages/textDemo/textDemo.wxml-->
<rich-text nodes="{{nodes}}"></rich-text>
- 在 
textDemo.js文件中定义一个 Node 节点对象数组nodes: 
// pages/textDemo/textDemo.js
Page({
  data: {
    nodes: [
      {
        name: 'h1',
        attrs: {
          style: 'line-height: 60px; color: #1AAD19;'
        },
        children: [
          {
            type: 'text',
            text: '标题'
          }
        ]
      },
      {
        name: 'p',
        children: [
          {
            type: 'text',
            text: '正文段落'
          }
        ]
      }
    ]
  }
});
运行代码,效果如图所示。

🦋4.3 使用 Node 对象渲染富文本
在使用 Node 对象渲染富文本时,需要传递一组 Node 节点对象。
Node 节点对象可配置的属性如表所示。
| 属性名 | 类型 | 意义 | 
|---|---|---|
| name | 字符串 | 标签名 | 
| attrs | 对象 | 当前标签元素的属性 | 
| children | 数组 | 子节点数组 | 
| type | 字符串 | 节点类型,可设置为 .node:标签节点,.text:文本节点 | 
| text | 字符串 | 文本,只有 tex 节点可以设置此值 | 
rich-text 支持的标签及属性
| 标签名 | 支持的属性 | 意义 | 
|---|---|---|
| a | class、style | 超链接标签 | 
| abbr | class、style | 缩写标签 | 
| address | class、style | 文档联系人的信息标签 | 
| article | class、style | 独立内容标签 | 
| aside | class、style | 侧边栏标签 | 
| b | class、style | 粗体标签 | 
| bdi | class、style | bidi 隔离标签 | 
| bdo | class、style、dir | bidi 覆盖标签 | 
| big | class、style | 大号字体文本标签 | 
| blockquote | class、style | 引用标签 | 
| br | class、style | 换行标签 | 
| caption | class、style | 表格标题标签 | 
| center | class、style | 文本居中标签 | 
| cite | class、style | 作品标题标标签 | 
| code | class、style | 代码文本标签 | 
| col | class、style、span、width | 对表格中的列进行组合 | 
| colgroup | class、style、span、width | 定义 colgroup 内每一列的列属性 | 
| dd | class、style | 列表项标签 | 
| del | class、style | 文本删除标签 | 
| div | class、style | 块标签 | 
| dl | class、style | 列表标文本标签 | 
| dt | class、style | 列表标标签 | 
| em | class、style | 文本强调标签 | 
| fieldset | class、style | 表单分组标签 | 
| font | class、style | 字体配置标签 | 
| footer | class、style | 页脚标签 | 
| h1 | class、style | 标题标签 | 
| h2 | class、style | 标题标签 | 
| h3 | class、style | 标题标签 | 
| h4 | class、style | 标题标签 | 
| h5 | class、style | 标题标签 | 
| h6 | class、style | 标题标签 | 
| header | class、style | 页头标签 | 
| hr | class、style | 水平分割线标签 | 
| i | class、style | 文本斜体标签 | 
| img | class、style、alt、src、height、width | 图片标签 | 
| ins | class、style | 文本插入标签 | 
| label | class、style | 标注标签 | 
| legend | class、style | fieldset 中的标题标签 | 
| li | class、style | 列表项标签 | 
| mark | class、style | 文本记号标签 | 
| nav | class、style | 导航标签 | 
| ol | class、style、start、type | 有序列表标签 | 
| p | class、style | 段落标签 | 
| pre | class、style | 文本预格式化标签 | 
| q | class、style | 文本引用标签 | 
| rt | class、style | 注音标签 | 
| ruby | class、style | 定义注音,与 rt 和 rp 标签一起使用 | 
| s | class、style | 定义不正确文本的标签 | 
| section | class、style | 区域标签 | 
| small | class、style | 小号字体标签 | 
| span | class、style | 行内元素标签 | 
| strong | class、style | 文本加粗标签 | 
| sub | class、style | 下标文本标签 | 
| sup | class、style | 上标文本标签 | 
| table | class、style、width | 表格标签 | 
| tbody | class、style | 主体内容标签 | 
| td | class、style、colspan、height、rowspan、width | 表格中的单元格标签 | 
| tfoot | class、style | 表格页脚标签 | 
| th | class、style、colspan、height、rowspan、width | 表头单元格标签 | 
| thead | class、style | 表头内容标签 | 
| tr | class、style、colspan、height、rowspan、width | 表格行标签 | 
| tt | class、style | 打字机文本标签 | 
| u | class、style | 下划线文本标签 | 
| ul | class、style | 无序列表标签 | 
在 rich-text 渲染时,其中大部分标签的用法都与 HTML 原标签的用法一致。但是有些也有区别,比如富文本中的 img 标签只能支持网络图片资源。如果使用了非上述列表中的标签,则会被自动移除。
- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)