程序员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. 什么是 text 组件?
          • 2. text 组件的常用属性
            • 2.1 显示连续空格 space
            • 2.2 解码 HTML 实体字符 decode
          • 3. 动态添加和移除文本案例
        • 富文本组件
        • 进度条组件
      • 表单组件

      • 路由页面跳转

      • 媒体组件

      • 地图

      • 画布

      • 网页嵌入

      • 页面属性配置节点

      • nvue组件

      • 小程序组件

    • 扩展组件

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

文本组件

# 文本组件

text 组件是 Uniapp 中用于包裹和显示文本的基础组件。在 app-nvue 和 app-uvue 环境中,文本必须放置在 text 组件内,不能直接放置在 view 组件中,以避免样式继承问题。而在其他平台(如 H5、微信小程序等)中,text 组件也是主要的文本展示方式,能够确保文本内容在多平台间的一致性。

# 1. 什么是 text 组件?

text 组件是用于显示和包裹文本的基础组件,适用于展示静态文本内容。特别是在多端开发中,text 组件的使用可以确保文本在各个平台上的样式和行为表现一致,避免不同平台之间的样式差异问题。

使用场景

  • 静态文本展示:用于展示段落、标签等静态文本内容。
  • 多端文本适配:在 app-nvue 环境中,必须通过 text 组件包裹文本,以确保样式能够正常继承和展示。
  • 动态文本更新:结合数据绑定和事件监听,实现动态文本的展示、更新和修改。

# 2. text 组件的常用属性

text 组件提供了灵活的属性,允许开发者控制文本是否可选、显示空格的方式以及是否支持 HTML 字符的解码。以下是一些常用属性:

属性名 类型 默认值 说明 平台差异说明
selectable Boolean false 是否允许用户选择文本 无
user-select Boolean false 是否允许用户选择文本(微信小程序专属) 仅微信小程序支持
space String 无 是否显示连续空格,支持 ensp, emsp, nbsp 三种空格类型 钉钉小程序不支持
decode Boolean false 是否解码 HTML 转义字符,如  , < 等 百度、钉钉小程序不支持

# 2.1 显示连续空格 space

  • 说明:通过 space 属性控制如何显示连续的空格符,支持以下三种模式:
    • ensp:中文字符宽度的一半。
    • emsp:中文字符宽度。
    • nbsp:根据字体设置的标准空格大小。
<template>
  <text space="nbsp">你好,世界!&nbsp;&nbsp;你好,Uniapp!</text>
</template>
1
2
3

# 2.2 解码 HTML 实体字符 decode

  • 说明:decode 属性用于解码 HTML 实体字符,比如 &lt;, &gt;, &amp; 等。这在展示从富文本或其他编码格式中获取的内容时非常有用。
<template>
  <text :decode="true">&lt;div&gt;Hello World!&lt;/div&gt;</text>
</template>
1
2
3

# 3. 动态添加和移除文本案例

以下案例展示了 text 组件的实际使用,通过按钮控制文本的添加和移除,并实现换行效果。该示例使用 Vue3 语法,并通过 text 组件包裹动态更新的文本内容。

<template>
  <view class="container">
    <!-- 包裹文本的 text 组件 -->
    <view class="text-box">
      <text>{{ text }}</text>
    </view>

    <!-- 控制添加和移除文本的按钮 -->
    <view class="button-group">
      <button type="primary" :disabled="!canAdd" @click="addLine">添加一行</button>
      <button type="warn" :disabled="!canRemove" @click="removeLine">移除一行</button>
    </view>
  </view>
</template>

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

// 定义文本内容和操作控制
const texts = [
  'HBuilder,900万开发者选择的IDE',
  'MUI,轻巧、漂亮的前端开源框架',
  'wap2app,M站快速转换原生体验的App',
  '5+Runtime,为HTML5插上原生的翅膀',
  'HBuilderX,轻巧、极速,极客编辑器',
  'uni-app,终极跨平台方案'
]
const extraLine = ref([]) // 额外添加的文本行
const text = ref('') // 当前显示的文本
const canAdd = ref(true) // 是否可以继续添加文本
const canRemove = ref(false) // 是否可以移除文本

// 添加一行文本
const addLine = () => {
  extraLine.value.push(texts[extraLine.value.length % texts.length])
  text.value = extraLine.value.join('\n')
  canAdd.value = extraLine.value.length < texts.length
  canRemove.value = extraLine.value.length > 0
}

// 移除一行文本
const removeLine = () => {
  if (extraLine.value.length > 0) {
    extraLine.value.pop()
    text.value = extraLine.value.join('\n')
    canAdd.value = extraLine.value.length < texts.length
    canRemove.value = extraLine.value.length > 0
  }
}
</script>

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

.text-box {
  border: 1px solid #ccc;
  padding: 10px;
  height: 200px;
  overflow-y: scroll;
}

.button-group {
  display: flex;
  justify-content: space-between;
  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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

代码解析

  1. text 组件的使用:

    • text 组件用来包裹文本内容,通过 Vue3 的数据绑定动态更新显示内容,并使用 \n 实现换行效果。
  2. 按钮控制文本的动态添加与移除:

    • 通过 addLine 和 removeLine 方法,分别控制文本的添加和移除。按钮根据当前文本的行数进行禁用或启用操作,确保用户操作的流畅性。
  3. 样式设计:

    • text-box 设置了边框和滚动区域,用于展示超出高度的文本内容。
    • button-group 使用 flex 布局,使两个按钮在页面上水平排列,保持整洁的布局风格。
编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
图标组件
富文本组件

← 图标组件 富文本组件→

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