微信小程序

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

输入框。该组件是原生组件,使用时请注意相关限制

通用属性

属性 类型 默认值 必填 说明 最低版本
value string 输入框的初始内容 1.0.0
type string text input 的类型 1.0.0
合法值 说明 最低版本
text 文本输入键盘
number 数字输入键盘
idcard 身份证输入键盘
digit 带小数点的数字键盘
safe-password 密码安全输入键盘 指引。仅 Webview 支持。 2.18.0
nickname 昵称输入键盘。 2.21.2
password boolean false 是否是密码类型 1.0.0
placeholder string 输入框为空时占位符 1.0.0
placeholder-style string 指定 placeholder 的样式 1.0.0
disabled boolean false 是否禁用 1.0.0
maxlength number 140 最大输入长度,设置为 -1 的时候不限制最大长度 1.0.0
cursor-spacing number 0 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 1.0.0
auto-focus boolean false (即将废弃,请直接使用 focus )自动聚焦,拉起键盘 1.0.0
focus boolean false 获取焦点 1.0.0
confirm-type string done 设置键盘右下角按钮的文字,仅在type=’text’时生效 1.1.0
合法值 说明
send 右下角按钮为“发送”
search 右下角按钮为“搜索”
next 右下角按钮为“下一个”
go 右下角按钮为“前往”
done 右下角按钮为“完成”
always-embed boolean false 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效) 2.10.4
confirm-hold boolean false 点击键盘右下角按钮时是否保持键盘不收起 1.1.0
cursor number 指定focus时的光标位置 1.5.0
cursor-color string 光标颜色。iOS 下的格式为十六进制颜色值 #000000,安卓下的只支持 default 和 green,Skyline 下无限制 3.1.0
selection-start number -1 光标起始位置,自动聚集时有效,需与selection-end搭配使用 1.9.0
selection-end number -1 光标结束位置,自动聚集时有效,需与selection-start搭配使用 1.9.0
adjust-position boolean true 键盘弹起时,是否自动上推页面 1.9.90
hold-keyboard boolean false focus时,点击页面的时候不收起键盘 2.8.2
safe-password-cert-path string 安全键盘加密公钥的路径,只支持包内路径。鸿蒙 OS 暂不支持 2.18.0
safe-password-length number 安全键盘输入密码长度。鸿蒙 OS 暂不支持 2.18.0
safe-password-time-stamp number 安全键盘加密时间戳。鸿蒙 OS 暂不支持 2.18.0
safe-password-nonce string 安全键盘加密盐值。鸿蒙 OS 暂不支持 2.18.0
safe-password-salt string 安全键盘计算hash盐值,若指定custom-hash 则无效。鸿蒙 OS 暂不支持 2.18.0
safe-password-custom-hash string 安全键盘计算hash的算法表达式,如 md5(sha1('foo' + sha256(sm3(password + 'bar'))))。鸿蒙 OS 暂不支持 2.18.0
bindinput eventhandle 键盘输入时或内容改变时触发。event.detail = { value: string, cursor?: number, keyCode?: number },cursor 为光标位置,keyCode 为键值。从 2.1.0 版本开始支持,处理函数可以直接 return 一个字符串,这个字符串会替换输入框的内容。 1.0.0
bindchange eventhandle 键盘非聚焦状态内容改变时触发。event.detail = { value: string } 1.0.0
bindfocus eventhandle 输入框聚焦时触发,event.detail = { value: string, height: number },height 为键盘高度,从基础库 1.9.90 版本开始支持 1.0.0
bindblur eventhandle 输入框失去焦点时触发,event.detail = { value: string, encryptedValue?: string, encryptError?: string } 1.0.0
bindconfirm eventhandle 点击完成按钮时触发,event.detail = { value: string, encryptedValue?: string, encryptError?: string } 1.0.0
bindkeyboardheightchange eventhandle 键盘高度发生变化的时候触发此事件,event.detail = {height: number, duration: number} 2.7.0
bindnicknamereview eventhandle 用户昵称审核完毕后触发,仅在 type 为 “nickname” 时有效,event.detail = { pass: boolean, timeout: boolean } 2.29.1

Skyline 特有属性

属性 类型 默认值 必填 说明 最低版本
bind:selectionchange eventhandle 选区改变事件, {selectionStart, selectionEnd} 3.2.0
bind:keyboardcompositionstart eventhandle 输入法开始新的输入时触发(仅当输入法支持时触发) 3.2.0
bind:keyboardcompositionupdate eventhandle 输入法输入字符时触发(仅当输入法支持时触发) 3.2.0
bind:keyboardcompositionend eventhandle 输入法输入结束时触发(仅当输入法支持时触发) 3.2.0
worklet:onkeyboardheightchange worklet 键盘高度变化时触发。event.detail = {height: height, pageBottomPadding: pageBottomPadding}; height: 键盘高度,pageBottomPadding: 页面上推高度 3.2.4

WebView 特有属性

属性 类型 默认值 必填 说明 最低版本
placeholder-class string input-placeholder 指定 placeholder 的样式类 1.0.0

Bug & Tip

  1. tip: confirm-type的最终表现与手机输入法本身的实现有关,部分安卓系统输入法和第三方输入法可能不支持或不完全支持
  2. tip : input 组件是一个原生组件,字体是系统字体,所以无法设置 font-family
  3. tip : 在 input 聚焦期间,避免使用 css 动画
  4. tip : 对于将 input 封装在自定义组件中、而 form 在自定义组件外的情况, form 将不能获得这个自定义组件中 input 的值。此时需要使用自定义组件的 内置 behaviors wx://form-field
  5. tip : 键盘高度发生变化,keyboardheightchange事件可能会多次触发,开发者对于相同的height值应该忽略掉
  6. bug : 微信版本 6.3.30, focus 属性设置无效
  7. bug : 微信版本 6.3.30, placeholder 在聚焦时出现重影问题

示例代码

在开发者工具中预览效果

form

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 聊天工具模式

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

表单。将组件内的用户输入的 switch、input、checkbox、slider、radio、picker 等表单控件的内容提交。

当点击微信小程序表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要在表单组件中加上 name 来作为 key。

属性说明

属性 类型 默认值 必填 说明 最低版本
report-submit boolean false 是否返回 formId 用于发送模板消息 1.0.0
report-submit-timeout number 0 等待一段时间(毫秒数)以确认 formId 是否生效。如果未指定这个参数,formId 有很小的概率是无效的(如遇到网络失败的情况)。指定这个参数将可以检测 formId 是否有效,以这个参数的时间作为这项检测的超时时间。如果失败,将返回 requestFormId:fail 开头的 formId 2.6.2
bindsubmit eventhandle 携带 form 中的数据触发 submit 事件,event.detail = {value : {‘name’ : ‘value’} , formId: ”} 1.0.0
bindreset eventhandle 表单重置时会触发 reset 事件 1.0.0
bindsubmitToGroup eventhandle 用户发送文本到聊天后触发,但不代表最终发送成功 3.7.8

发送文本到群示例代码

需结合 button 和 textarea 组件使用。 button 需要设置 form-type="submitToGroup",此时点击按钮将会发送 textarea 的内容到聊天。

<form bind:submitToGroup="onSubmitToGroup">
    <textarea value="{{shareText}}" />
    <button
    form-type="submitToGroup"
    need-show-entrance="{{true}}"
    entrance-path=""
    ></button>
</form>

示例代码

// 在开发者工具中预览效果

使用内置 behaviors

对于微信小程序的 form 组件,目前可以自动识别下列内置 behaviors:

wx://form-field

wx://form-field-group

wx://form-field-button

wx://form-field

使自定义组件有类似于表单控件的行为。 微信小程序的 form 组件可以识别这些自定义组件,并在 submit 事件中返回组件的字段名及其对应字段值。这将为它添加以下两个属性。

属性名 类型 描述 最低版本
name String 在表单中的字段名 1.6.7
value 任意 在表单中的字段值 1.6.7

代码示例: 在开发者工具中预览效果

// custom-form-field.js
Component({
 behaviors: ['wx://form-field'],
 data: {
   value: ''
 },
 methods: {
   onChange: function (e) {
     this.setData({
       value: e.detail.value,
     })
   }
 }
})

wx://form-field-group

从基础库版本 2.10.2 开始提供支持。

代码示例: 在开发者工具中预览效果

使微信小程序的 form 组件可以识别到这个自定义组件内部的所有表单控件。 例如,页面的结构如下:

<form bindsubmit="submit">
  <custom-comp></custom-comp>
  <button form-type="submit">submit</button>
</form>

组件 custom-comp 自身结构如下:

<input name="name" />
<switch name="student" />

如果组件 custom-comp 配置有:

Component({
 behaviors: ['wx://form-field-group']
})

此时,表单的 submit 事件的 value 中将包含 namestudent 两个字段。

wx://form-field-button

从基础库版本 2.10.3 开始提供支持。

代码示例: 在开发者工具中预览效果

使微信小程序的 form 组件可以识别到这个自定义组件内部的 button , 如果自定义组件内部有设置了 form-type 的 button ,它将被组件外的 form 接受。 例如,页面的结构如下:

<form bindsubmit="submit">
  <input name="name" placeholder="请输入名字"></input>
  <custom-comp></custom-comp>
</form>

组件 custom-comp 自身结构如下:

<button form-type="submit">submit</button>

如果组件 custom-comp 配置有:

Component({
 behaviors: ['wx://form-field-button']
})

此时点击组件内的 button ,将触发 form 的 submit 事件。

editor-portal

基础库 3.7.11 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:WebView

功能描述

渲染微信小程序 editor 组件的自定义区块。相关接口 EditorCtx.insertCustomBlock。

属性说明

属性 类型 默认值 必填 说明
key string 自定义区块的 blockId

使用方法

插入自定义区块

  1. 使用 EditorContext.insertCustomBlock 插入自定义区块(此时仅占位),获取返回的 blockId
  2. 渲染 <editor-portal> 组件,并指定 key 属性为 blockId<editor-portal> 中的内容将插入到自定义区块的位置;

重新渲染自定义区块

自定义区块的结构和数据需要分开存储。建议编辑区内容使用返回的delta 数据结构存储,更为精简。

  1. 通过 EditorContext.getContents 获取编辑区内容,此时 delta 中自定义块仅保存对应的 blockId;
  2. 开发者需自行保存自定义块对应的数据内容,按 blockId 映射;
  3. 通过 EditorContext.setContents 设置编辑区内容时,同时渲染 <editor-portal> 组件替换自定义区块的内容;

示例代码

在开发者工具中预览效果

<editor id="editor">
  <block wx:for="{{customBlockList}}" wx:key="blockId">
    <editor-portal key="{{item.blockId}}">
      <view class="flex"></view>
    </editor-portal>
  </block>
</editor>
Page({
  insertCustomBlock() {
    const { customBlockList } = this.data
    this.editorCtx.insertCustomBlock({
      success:(res) => {
        customBlockList.push({
          blockId: res.blockId
        })
        this.setData({ customBlockList })
      }
    })
  }
})

editor

基础库 2.7.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:WebView

功能描述

富文本编辑器,可以对图片、文字进行编辑。

编辑器导出内容支持带标签的 html和纯文本的 text,编辑器内部采用 delta 格式进行存储。

通过setContents接口设置内容时,解析插入的 html 可能会由于一些非法标签导致解析错误,建议开发者在微信小程序内使用时通过 delta 进行插入。

富文本组件内部引入了一些基本的样式使得内容可以正确的展示,开发时可以进行覆盖。需要注意的是,在其它组件或环境中使用富文本组件导出的html时,需要额外引入 这段样式,并维护<ql-container><ql-editor></ql-editor></ql-container>的结构。

图片控件仅初始化时设置有效。

相关 api:EditorContext

属性说明

属性 类型 默认值 必填 说明 最低版本
read-only boolean false 设置编辑器为只读 2.7.0
placeholder string 提示信息 2.7.0
show-img-size boolean false 点击图片时显示图片大小控件 2.7.0
show-img-toolbar boolean false 点击图片时显示工具栏控件 2.7.0
show-img-resize boolean false 点击图片时显示修改尺寸控件 2.7.0
enable-formats Array.<string> 所有格式 编辑器允许的名单内的格式 3.2.2
enterkeyhint string enter 定义虚拟键盘回车键的操作标签 3.7.11
confirm-hold boolean true 点击键盘回车键时是否保持键盘不收起 3.7.11
bindready eventhandle 编辑器初始化完成时触发 2.7.0
bindfocus eventhandle 编辑器聚焦时触发,event.detail = {html, text, delta} 2.7.0
bindblur eventhandle 编辑器失去焦点时触发,detail = {html, text, delta} 2.7.0
bindinput eventhandle 编辑器内容改变时触发,detail = {html, text, delta} 2.7.0
bindstatuschange eventhandle 通过 Context 方法改变编辑器内样式时触发,返回选区已设置的样式 2.7.0

编辑器内支持部分 HTML 标签和内联样式,不支持classid

支持的标签

不满足的标签会被忽略,<div>会被转行为<p>储存。

类型 节点
行内元素 <span> <strong> <b> <ins> <em> <i> <u> <a> <del> <s> <sub> <sup> <img>
块级元素 <p> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <ol> <ul> <li>

支持的内联样式

内联样式仅能设置在行内元素或块级元素上,不能同时设置。例如 font-size 归类为行内元素属性,在 p 标签上设置是无效的。

类型 样式
块级样式 text-align direction margin margin-top margin-left margin-right margin-bottom
padding padding-top padding-left padding-right padding-bottom line-height text-indent
行内样式 font font-size font-style font-variant font-weight font-family
letter-spacing text-decoration color background-color

enable-formats 属性列表

可以通过该参数控制以下属性是否被禁用。请注意,不在以下名单内的格式将固定开启。

name version
bold 3.2.2
italic 3.2.2
underline 3.2.2

Bug & Tip

  1. tip: 使用 catchtouchend 绑定事件则不会使编辑器失去焦点(2.8.3)
  2. tip: 插入的 html 中事件绑定会被移除
  3. tip: formats 中的 color 属性会统一以 hex 格式返回
  4. tip: 粘贴时仅纯文本内容会被拷贝进编辑器
  5. tip: 插入 html 到编辑器内时,编辑器会删除一些不必要的标签,以保证内容的统一。例如<p><span>xxx</span></p>会改写为<p>xxx</p>
  6. tip: 编辑器聚焦时页面会被上推,系统行为以保证编辑区可见

示例代码

在开发者工具中预览效果

checkbox-group

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

多项选择器,内部由多个 checkbox 组成。

属性说明

属性 类型 默认值 必填 说明 最低版本
bindchange EventHandle checkbox-group 中选中项发生改变时触发 change 事件,detail = {value:[选中的 checkbox 的 value 的数组]} 1.0.0

checkbox

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

多选项目。

属性说明

属性 类型 默认值 必填 说明 最低版本
value string checkbox标识,选中时触发checkbox-group的 change 事件,并携带 checkbox 的 value 1.0.0
disabled boolean false 是否禁用 1.0.0
checked boolean false 当前是否选中,可用来设置默认选中 1.0.0
color string #09BB07 checkbox的颜色,同css的color 1.0.0

示例代码

在开发者工具中预览效果

button

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

相关文档: 聊天工具模式

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

按钮。

通用属性

属性 类型 默认值 必填 说明 最低版本
size string default 按钮的大小 1.0.0
合法值 说明
default 默认大小
mini 小尺寸
type string default 按钮的样式类型 1.0.0
合法值 说明
primary 绿色
default 白色
warn 红色
plain boolean false 按钮是否镂空,背景色透明 1.0.0
disabled boolean false 是否禁用 1.0.0
loading boolean false 名称前是否带 loading 图标 1.0.0
form-type string 用于 form 组件,点击分别会触发 form 组件的 submit/reset 事件 1.0.0
合法值 说明 最低版本
submit 提交表单
reset 重置表单
submitToGroup 转发文本到聊天 3.7.8
open-type string 微信开放能力 1.1.0
合法值 说明 最低版本
contact 打开客服会话,如果用户在会话中点击消息卡片后返回微信小程序,可以从 bindcontact 回调中获得具体信息,具体说明。鸿蒙 OS 暂不支持 1.1.0
liveActivity 通过前端获取新的一次性订阅消息下发机制使用的 code 2.26.2
share 触发用户转发,使用前建议先阅读使用指引 1.2.0
getPhoneNumber 手机号快速验证,向用户申请,并在用户同意后,快速填写和验证手机,具体说明 (*微信小程序插件中不能使用*) 1.2.0
getRealtimePhoneNumber 手机号实时验证,向用户申请,并在用户同意后,快速填写和实时验证手机号。具体说明 (*微信小程序插件中不能使用*) 2.24.4
getUserInfo 获取用户信息,可以从bindgetuserinfo回调中获取到用户信息 (*微信小程序插件中不能使用*) 1.3.0
launchApp 打开APP,可以通过app-parameter属性设定向APP传的参数具体说明 1.9.5
openSetting 打开授权设置页 2.0.7
feedback 打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录微信小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容 2.1.0
chooseAvatar 获取用户头像,可以从bindchooseavatar回调中获取到头像信息 2.21.2
agreePrivacyAuthorization 用户同意隐私协议按钮。用户点击一次此按钮后,所有已声明过的隐私接口可以正常调用。可通过 bindagreeprivacyauthorization 监听用户同意隐私协议事件。隐私合规开发指南详情可见《微信小程序隐私协议开发指南》 2.32.3
hover-class string button-hover 指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果 1.0.0
hover-stop-propagation boolean false 指定是否阻止本节点的祖先节点出现点击态 1.5.0
hover-start-time number 20 按住后多久出现点击态,单位毫秒 1.0.0
hover-stay-time number 70 手指松开后点击态保留时间,单位毫秒 1.0.0
lang string en 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。 1.3.0
合法值 说明
en 英文
zh_CN 简体中文
zh_TW 繁体中文
session-from string 会话来源,open-type=”contact”时有效,长度不超过 1024 个字符 1.4.0
send-message-title string 当前标题 会话内消息卡片标题,open-type=”contact”时有效 1.5.0
send-message-path string 当前分享路径 会话内消息卡片点击跳转微信小程序路径,open-type=”contact”时有效 1.5.0
send-message-img string 截图 会话内消息卡片图片,open-type=”contact”时有效 1.5.0
app-parameter string 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 1.9.5
show-message-card boolean false 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示”可能要发送的微信小程序“提示,用户点击后可以快速发送微信小程序消息,open-type=”contact”时有效 1.5.0
phone-number-no-quota-toast boolean true 当手机号快速验证或手机号实时验证额度用尽时,是否对用户展示“申请获取你的手机号,但该功能使用次数已达当前微信小程序上限,暂时无法使用”的提示,默认展示,open-type=”getPhoneNumber” 或 open-type=”getRealtimePhoneNumber” 时有效 3.0.1
need-show-entrance boolean true 转发的文本消息是否要带微信小程序入口 3.7.8
entrance-path string 从消息微信小程序入口打开微信小程序的路径,默认为聊天工具启动路径 3.7.8
bindgetuserinfo eventhandle 用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致,open-type=”getUserInfo”时有效 1.3.0
bindcontact eventhandle 客服消息回调,open-type=”contact”时有效。 1.5.0
createliveactivity eventhandle 新的一次性订阅消息下发机制回调,open-type=liveActivity时有效 2.26.2
bindgetphonenumber eventhandle 手机号快速验证回调,open-type=getPhoneNumber时有效。提示:在触发 bindgetphonenumber 回调后应立即隐藏手机号按钮组件,或置为 disabled 状态,避免用户重复授权手机号产生额外费用。 1.2.0
bindgetrealtimephonenumber eventhandle 手机号实时验证回调,open-type=getRealtimePhoneNumber 时有效。提示:在触发 bindgetrealtimephonenumber 回调后应立即隐藏手机号按钮组件,或置为 disabled 状态,避免用户重复授权手机号产生额外费用。 2.24.4
binderror eventhandle 当使用开放能力时,发生错误的回调,open-type=launchApp时有效 1.9.5
bindopensetting eventhandle 在打开授权设置页后回调,open-type=openSetting时有效 2.0.7
bindlaunchapp eventhandle 打开 APP 成功的回调,open-type=launchApp时有效 2.4.4
bindchooseavatar eventhandle 获取用户头像回调,open-type=chooseAvatar时有效 2.21.2
bindagreeprivacyauthorization eventhandle 用户同意隐私协议事件回调,open-type=agreePrivacyAuthorization时有效 (提示:如果使用 onNeedPrivacyAuthorization 接口,需要在 bindagreeprivacyauthorization 触发后再调用 resolve({ event: "agree", buttonId }) 2.32.3

Bug & Tip

  1. tip: button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}
  2. tip: bindgetphonenumber 从1.2.0 开始支持,但是在1.5.3以下版本中无法使用wx.canIUse进行检测,建议使用基础库版本进行判断。
  3. tip: 在bindgetphonenumber 等返回加密信息的回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
  4. tip: 从 2.21.2 起,对getPhoneNumber接口进行了安全升级,bindgetphonenumber 返回的信息中增加code参数,code是一个动态的令牌,开发者拿到code后需调用微信后台接口换取手机号。详情新版接口使用指南
  5. tip: 从 2.1.0 起,button 可作为原生组件的子节点嵌入,以便在原生组件上使用 open-type 的能力。
  6. tip: 目前设置了 form-typebutton 只会对当前组件中的 form 有效。因而,将 button 封装在自定义组件中,而 form 在自定义组件外,将会使这个 buttonform-type 失效。

发送文本到群示例代码

需结合 form 和 textarea 组件使用。 button 需要设置 form-type="submitToGroup",此时点击按钮将会发送 textarea 的内容到聊天。

<form bind:submitToGroup="onSubmitToGroup">
    <textarea value="{{shareText}}" />
    <button
    form-type="submitToGroup"
    need-show-entrance="{{true}}"
    entrance-path=""
    ></button>
</form>

示例代码

在开发者工具中预览效果

text

基础库 1.0.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

文本。

  1. 内联文本只能用 text 组件,不能用 view,如 <text> foo <text>bar</text> </text>
  2. 新增 span 组件用于内联文本和图片,如 <span> <image> </image> <text>bar</text> </span>

通用属性

属性 类型 默认值 必填 说明 最低版本
selectable boolean false 文本是否可选 (已废弃) 1.1.0
user-select boolean false 文本是否可选,该属性会使文本节点显示为 inline-block 2.12.1

Skyline 特有属性

属性 类型 默认值 必填 说明
overflow string visible 文本溢出处理
合法值 说明
clip 修剪文本
fade 淡出
ellipsis 显示省略号
visible 文本不截断
max-lines number 限制文本最大行数
select-on-gesture boolean true 是否允许通过手势选择文本,关闭后通常可以结合 SelectionContext.selectRange 接口使用

WebView 特有属性

属性 类型 默认值 必填 说明 最低版本
space string 显示连续空格 1.4.0
合法值 说明
ensp 中文字符空格一半大小
emsp 中文字符空格大小
nbsp 根据字体设置的空格大小
decode boolean false 是否解码 1.4.0

Bug & Tip

  1. tip: decode可以解析的有 &nbsp; &lt; &gt; &amp; &apos; &ensp; &emsp;
  2. tip: 各个操作系统的空格标准并不一致。
  3. tip:text 组件内只支持 text 嵌套。
  4. tip: 除了文本节点以外的其他节点都无法长按选中。
  5. bug: 基础库版本低于 2.1.0 时, text 组件内嵌的 text style 设置可能不会生效。

示例代码

在开发者工具中预览效果

微信小程序选择

基础库 3.6.4 开始支持,低版本需做兼容处理。

渲染框架支持情况:WebView

功能描述

局部文本选区。

属性说明

属性 类型 默认值 必填 说明 最低版本
disable-context-menu boolean false 是否隐藏客户端原生文本选区按钮 3.6.4
bindselectionchange eventhandle 当选区发生变化时触发 selectionchange 事件 event.detail = { isCollapsed, selectedString, firstNodeId, firstOffset, lastNodeId, lastOffset, firstRangeRect } 3.6.4

Bug & Tip

  1. tip: 长按选区在 wx-selection 内才可以触发 disable-context-menu 的效果
  2. tip: textrich-text 组件需要设置 user-selecttrue
  3. tip: firstNodeIdlastNodeId 需要 textrich-text 组件设置 id
  4. tip: 超出 wx-selection 的情况下 firstOffsetlastOffset 为空。

示例代码

在开发者工具中预览效果

rich-text

基础库 1.4.0 开始支持,低版本需做兼容处理。

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView

功能描述

富文本。

  1. 自基础库 2.33.0 版本开始支持(3.0.0 除外)。
  2. 遵循 skyline 的样式和布局规则,html tag 被映射成类似 text/span/view 节点,因此存在 text 嵌套问题。
  3. 不支持 td/tr 等表格布局 tag,也不支持 bdo/bdi 等文字排版 tag。建议完全使用 flex 等 skyline 支持的布局方式来创建富文本内容。
  4. 提供了可选的兼容布局模式选项 mode,但仍不保证与 WebView 表现 100% 一致。
  5. 在 2.33.0 基础库下,请尽可能避免为 html tag 使用 wx-rich-text 开头的类名。

通用属性

属性 类型 默认值 必填 说明 最低版本
nodes array/string [] 节点列表/HTML String 1.4.0
space string 显示连续空格 2.4.1
合法值 说明
ensp 中文字符空格一半大小
emsp 中文字符空格大小
nbsp 根据字体设置的空格大小
user-select boolean false 文本是否可选,该属性会使节点显示为 block 2.24.0

Skyline 特有属性

属性 类型 默认值 必填 说明
mode string default 布局兼容模式
合法值 说明
default 完全遵循 skyline 的默认行为,不对节点树进行任何更改。
compat 尽可能将 tag 映射为 <view><span></span></view> 的形式。通常最接近 webview 的表现。
aggressive 所有 tag 均被映射为形如 <view><span></span></view> 的形式。
inline-block 实验性的 inline-block 布局策略,但无法实现折行。
web 使用 webview 渲染富文本,基础库 3.6.0 开始支持。
web-static 使用 webview 截图的方式渲染富文本,基础库 3.7.7 开始支持。

nodes

现支持两种节点,通过type来区分,分别是元素节点和文本节点,默认是元素节点,在富文本区域里显示的HTML节点

元素节点:type = node

属性 说明 类型 必填 备注
name 标签名 string 支持部分受信任的 HTML 节点
attrs 属性 object 支持部分受信任的属性,遵循 Pascal 命名法
children 子节点列表 array 结构和 nodes 一致

文本节点:type = text

属性 说明 类型 必填 备注
text 文本 string 支持entities

受信任的HTML节点及属性

全局支持class和style属性,不支持id属性

节点 属性
a
abbr
address
article
aside
b
bdi
bdo dir
big
blockquote
br
caption
center
cite
code
col span,width
colgroup span,width
dd
del
div
dl
dt
em
fieldset
font
footer
h1
h2
h3
h4
h5
h6
header
hr
i
img alt,src,height,width
ins
label
legend
li
mark
nav
ol start,type
p
pre
q
rt
ruby
s
section
small
span
strong
sub
sup
table width
tbody
td colspan,height,rowspan,width
tfoot
th colspan,height,rowspan,width
thead
tr colspan,height,rowspan,width
tt
u
ul

Bug 与提示

  1. tip: nodes 不推荐使用 String 类型,性能会有所下降。
  2. tip: rich-text 组件内屏蔽所有节点的事件。
  3. tip: attrs 属性不支持 id ,支持 class 。
  4. tip: name 属性大小写不敏感。
  5. tip: 如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。
  6. tip: img 标签仅支持网络图片。
  7. tip: 如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效。

示例代码

在开发者工具中预览效果