程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

  • uniapp多端开发

    • 快速入门

    • 内置组件

      • 视图容器

      • 基础内容

        • 图标组件
        • 文本组件
        • 富文本组件
          • 1. 什么是 rich-text 组件?
          • 2. rich-text 组件的常用属性
            • 2.1 nodes 属性
            • 2.2 支持的 HTML 标签与属性
          • 3. 数组与字符串形式的 nodes
        • 进度条组件
      • 表单组件

      • 路由页面跳转

      • 媒体组件

      • 地图

      • 画布

      • 网页嵌入

      • 页面属性配置节点

      • nvue组件

      • 小程序组件

    • 扩展组件

  • 小程序开发
  • uniapp多端开发
  • 内置组件
  • 基础内容
scholar
2024-10-21
目录

富文本组件

# 富文本组件

rich-text 是 Uniapp 中用于展示富文本的核心组件。它支持通过 nodes 属性传入 HTML 结构或富文本节点列表,以渲染图文并茂的内容。开发者可以通过 rich-text 组件将文本、图片、链接等多种元素以富文本形式展示,且该组件主要用于内容展示,屏蔽了大部分事件。

# 1. 什么是 rich-text 组件?

rich-text 组件允许开发者通过 HTML 标签或节点列表,渲染复杂的富文本内容。它常用于展示动态内容、文章、博客等需要图文混排的场景,并支持展示的文本、图片、链接等元素的基本样式控制。

使用场景

  • 动态内容展示:用于展示通过接口获取的 HTML 富文本,如新闻、博客、文章等。
  • 图文混排:在页面中展示富文本内容,支持混合图片和文本的排版。
  • 内容预览:结合 HTML 标签渲染富文本内容,在多个平台上实现一致的内容展示。

# 2. rich-text 组件的常用属性

rich-text 组件的核心属性是 nodes,它决定了组件中渲染的内容,可以接受 HTML 字符串或节点列表。

属性名 类型 默认值 说明 平台差异说明
nodes Array / String [] 富文本内容的节点列表或 HTML 字符串,推荐使用数组类型以提升性能 无
space String 无 显示连续空格,支持 ensp、emsp、nbsp App、H5、微信小程序等
selectable Boolean true 是否允许富文本中的文本可以长按选中,可用于复制等操作 百度小程序仅真机支持
image-menu-prevent Boolean false 是否阻止长按图片时弹出的默认菜单,适用于百度小程序,且只在初始化时有效 无
preview Boolean true 是否允许点击预览富文本中的图片 无

# 2.1 nodes 属性

  • 说明:nodes 可以是 HTML 字符串或者节点列表。推荐使用节点列表,以避免将 HTML 字符串转换为节点列表时产生的性能开销。

节点列表结构:

  • 元素节点:type 为 node,包含 name(标签名称),attrs(标签属性),children(子节点列表)。
  • 文本节点:type 为 text,包含 text(文本内容)。
{
  name: 'div',
  attrs: { class: 'my-class', style: 'color: red;' },
  children: [{ type: 'text', text: 'Hello World' }]
}
1
2
3
4
5

# 2.2 支持的 HTML 标签与属性

rich-text 支持部分 HTML 标签和属性,常见标签如下:

标签 支持的属性
a href, target
img src, alt, width, height
div class, style
p class, style
span class, style

# 3. 数组与字符串形式的 nodes

以下案例展示了如何使用 rich-text 组件通过 nodes 属性传递节点数组和 HTML 字符串来渲染富文本内容。

<template>
  <view class="content">
    <!-- 数组形式的节点 -->
    <view class="section-title">数组类型: nodes 属性为 Array</view>
    <view class="rich-text-box">
      <rich-text :nodes="nodesArray"></rich-text>
    </view>

    <!-- 字符串形式的 HTML -->
    <view class="section-title">字符串类型: nodes 属性为 String</view>
    <view class="rich-text-box">
      <rich-text :nodes="htmlString"></rich-text>
    </view>
  </view>
</template>

<script setup>
import { ref } from 'vue'

// 节点数组
const nodesArray = ref([
  {
    name: 'div',
    attrs: { class: 'rich-text-div', style: 'text-align: center; color: blue;' },
    children: [{ type: 'text', text: '这是一个富文本组件的示例' }]
  }
])

// HTML 字符串
const htmlString = ref('<div style="text-align: center;"><img src="https://example.com/image.png" alt="Example Image"/></div>')
</script>

<style scoped>
.content {
  padding: 20px;
}

.section-title {
  font-size: 18px;
  font-weight: bold;
  margin-top: 20px;
}

.rich-text-box {
  padding: 10px;
  background-color: #f9f9f9;
  border-radius: 8px;
  margin-top: 10px;
}
</style>
1
2
3
4
5
6
7
8
9
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

代码解析

  1. nodes 属性传递节点数组:

    • 通过 nodesArray 传递一个包含 div 和 text 节点的数组,展示简单的文本内容。
  2. nodes 属性传递 HTML 字符串:

    • 通过 htmlString 传递 HTML 字符串,展示一个带有图片的 div 元素。
  3. 样式设计:

    • rich-text-box 用于包裹富文本内容,设置了背景色和圆角效果,提升界面观感。

image-20241021012335316

编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
文本组件
进度条组件

← 文本组件 进度条组件→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式