Text 文本组件
学习目标
- 掌握 Text 文本组件的基础用法
- 理解文本类型和样式控制
- 学会使用文本截断和省略号功能
- 能够创建美观的文本界面
详细学习内容
1. Text 文本组件
1.1 基础用法
Text 组件用于显示文本内容,支持多种类型和样式。
vue
<template>
<div class="text-demo">
<!-- 基础文本 -->
<el-text>默认文本</el-text>
<!-- 不同类型的文本 -->
<el-text type="primary">主要文本</el-text>
<el-text type="success">成功文本</el-text>
<el-text type="info">信息文本</el-text>
<el-text type="warning">警告文本</el-text>
<el-text type="danger">危险文本</el-text>
</div>
</template>
<style>
.text-demo {
display: flex;
flex-direction: column;
gap: 10px;
}
</style>
1.2 文本大小
vue
<template>
<div class="text-size-demo">
<el-text size="large">大号文本</el-text>
<el-text>默认文本</el-text>
<el-text size="small">小号文本</el-text>
</div>
</template>
1.3 文本截断
vue
<template>
<div class="text-truncate-demo">
<!-- 单行截断 -->
<el-text truncated style="width: 200px;">
这是一段很长的文本内容,会被截断显示省略号
</el-text>
<!-- 多行截断 -->
<el-text
:line-clamp="2"
style="width: 200px;"
>
这是一段很长的文本内容,支持多行显示,超出指定行数后会被截断并显示省略号
</el-text>
</div>
</template>
1.4 文本标签
vue
<template>
<div class="text-tag-demo">
<el-text tag="p">段落文本</el-text>
<el-text tag="span">行内文本</el-text>
<el-text tag="div">块级文本</el-text>
<el-text tag="b">粗体文本</el-text>
<el-text tag="i">斜体文本</el-text>
</div>
</template>
2. 高级文本应用
2.1 文本状态控制
vue
<template>
<div class="text-state-demo">
<h3>文本状态</h3>
<!-- 禁用状态 -->
<div class="state-group">
<h4>禁用状态</h4>
<el-text disabled>禁用的文本</el-text>
<el-text type="primary" disabled>禁用的主要文本</el-text>
<el-text type="success" disabled>禁用的成功文本</el-text>
</div>
<!-- 加载状态 -->
<div class="state-group">
<h4>加载状态</h4>
<el-text v-loading="loading">加载中的文本</el-text>
<el-button @click="toggleLoading">切换加载状态</el-button>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
const loading = ref(false)
const toggleLoading = () => {
loading.value = !loading.value
}
</script>
<style>
.text-state-demo {
margin-bottom: 32px;
}
.state-group {
margin-bottom: 24px;
padding: 16px;
border: 1px solid #e4e7ed;
border-radius: 8px;
}
.state-group h4 {
margin-bottom: 12px;
color: #409eff;
}
</style>
2.2 文本样式定制
vue
<template>
<div class="text-custom-demo">
<h3>自定义文本样式</h3>
<!-- 自定义颜色 -->
<div class="custom-group">
<h4>自定义颜色</h4>
<el-text style="color: #ff6b6b;">红色文本</el-text>
<el-text style="color: #4ecdc4;">青色文本</el-text>
<el-text style="color: #45b7d1;">蓝色文本</el-text>
<el-text style="color: #96ceb4;">绿色文本</el-text>
</div>
<!-- 自定义字体 -->
<div class="custom-group">
<h4>自定义字体</h4>
<el-text class="custom-font-1">自定义字体样式 1</el-text>
<el-text class="custom-font-2">自定义字体样式 2</el-text>
<el-text class="custom-font-3">自定义字体样式 3</el-text>
</div>
<!-- 文本装饰 -->
<div class="custom-group">
<h4>文本装饰</h4>
<el-text class="underline">下划线文本</el-text>
<el-text class="strikethrough">删除线文本</el-text>
<el-text class="overline">上划线文本</el-text>
</div>
</div>
</template>
<style>
.text-custom-demo {
margin-bottom: 32px;
}
.custom-group {
margin-bottom: 24px;
padding: 16px;
border: 1px solid #e4e7ed;
border-radius: 8px;
}
.custom-group h4 {
margin-bottom: 12px;
color: #409eff;
}
.custom-group .el-text {
display: block;
margin-bottom: 8px;
}
.custom-font-1 {
font-family: 'Georgia', serif;
font-style: italic;
}
.custom-font-2 {
font-family: 'Courier New', monospace;
font-weight: bold;
}
.custom-font-3 {
font-family: 'Arial', sans-serif;
letter-spacing: 2px;
text-transform: uppercase;
}
.underline {
text-decoration: underline;
}
.strikethrough {
text-decoration: line-through;
}
.overline {
text-decoration: overline;
}
</style>
2.3 响应式文本
vue
<template>
<div class="responsive-text-demo">
<h3>响应式文本</h3>
<div class="responsive-container">
<el-text class="responsive-title">
响应式标题文本
</el-text>
<el-text class="responsive-content">
这是响应式的内容文本。在不同的屏幕尺寸下,文字大小会自动调整以确保最佳的阅读体验。
在移动设备上文字会相对较小,在桌面设备上会相对较大。
</el-text>
<el-text class="responsive-caption">
响应式说明文字
</el-text>
</div>
</div>
</template>
<style>
.responsive-text-demo {
margin-bottom: 32px;
}
.responsive-container {
padding: 20px;
border: 1px solid #e4e7ed;
border-radius: 8px;
background-color: #fafafa;
}
/* 基础样式(移动优先) */
.responsive-title {
display: block;
font-size: 18px;
font-weight: 600;
margin-bottom: 12px;
color: #303133;
}
.responsive-content {
display: block;
font-size: 14px;
line-height: 1.6;
margin-bottom: 8px;
color: #606266;
}
.responsive-caption {
display: block;
font-size: 12px;
color: #909399;
}
/* 平板样式 */
@media (min-width: 768px) {
.responsive-title {
font-size: 20px;
}
.responsive-content {
font-size: 15px;
line-height: 1.7;
}
.responsive-caption {
font-size: 13px;
}
}
/* 桌面样式 */
@media (min-width: 1024px) {
.responsive-title {
font-size: 24px;
margin-bottom: 16px;
}
.responsive-content {
font-size: 16px;
line-height: 1.8;
margin-bottom: 12px;
}
.responsive-caption {
font-size: 14px;
}
}
</style>
3. 综合应用示例
3.1 文章内容展示
这个示例展示了如何使用 el-text
组件来构建一个完整的文章页面。
vue
<template>
<div class="article-demo">
<article class="article">
<!-- 文章头部 -->
<header class="article-header">
<el-text tag="h1" class="article-title">
Element Plus Text 组件完全指南
</el-text>
<div class="article-meta">
<el-text class="meta-item">
<el-icon><Document /></el-icon>
技术文档
</el-text>
<el-text class="meta-item">
<el-icon><Calendar /></el-icon>
2024年1月15日
</el-text>
<el-text class="meta-item">
<el-icon><User /></el-icon>
Element Plus 团队
</el-text>
</div>
</header>
<!-- 文章内容 -->
<main class="article-content">
<el-text tag="p" class="lead-text">
Text 组件是 Element Plus 中最基础也是最重要的组件之一。
它提供了丰富的文本展示功能,支持多种类型、大小和样式。
</el-text>
<el-text tag="h2" class="section-title">
主要特性
</el-text>
<el-text tag="p" class="content-text">
Text 组件具有以下主要特性:
</el-text>
<ul class="feature-list">
<li>
<el-text type="primary">多种类型支持</el-text>
<el-text>:支持 primary、success、warning、danger、info 等类型</el-text>
</li>
<li>
<el-text type="success">灵活的大小控制</el-text>
<el-text>:提供 large、default、small 三种尺寸</el-text>
</li>
<li>
<el-text type="warning">文本截断功能</el-text>
<el-text>:支持单行和多行文本截断</el-text>
</li>
<li>
<el-text type="info">标签自定义</el-text>
<el-text>:可以渲染为任意 HTML 标签</el-text>
</li>
</ul>
<el-text tag="h2" class="section-title">
使用建议
</el-text>
<el-text tag="p" class="content-text">
在实际项目中,建议根据内容的重要性和语义来选择合适的文本类型和样式。
对于重要信息使用 primary 类型,成功状态使用 success 类型,
警告信息使用 warning 类型,错误信息使用 danger 类型。
</el-text>
<div class="code-example">
<el-text tag="h3" class="example-title">代码示例</el-text>
<el-text tag="pre" class="code-block">
<el-text type="primary">重要信息</el-text>
<el-text type="success">操作成功</el-text>
<el-text type="warning">注意事项</el-text>
<el-text type="danger">错误提示</el-text>
</el-text>
</div>
</main>
<!-- 文章底部 -->
<footer class="article-footer">
<el-text class="footer-text">
希望这篇文章能帮助你更好地理解和使用 Element Plus 的 Text 组件。
</el-text>
<div class="tags">
<el-text class="tag">Element Plus</el-text>
<el-text class="tag">Text 组件</el-text>
<el-text class="tag">前端开发</el-text>
<el-text class="tag">Vue.js</el-text>
</div>
</footer>
</article>
</div>
</template>
<script setup>
import { Document, Calendar, User } from '@element-plus/icons-vue'
</script>
<style>
.article-demo {
max-width: 800px;
margin: 0 auto;
padding: 24px;
}
.article {
background: white;
border-radius: 12px;
padding: 32px;
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
}
/* 文章头部 */
.article-header {
margin-bottom: 32px;
padding-bottom: 20px;
border-bottom: 1px solid #e4e7ed;
}
.article-title {
font-size: 28px;
font-weight: 700;
line-height: 1.2;
color: #303133;
margin-bottom: 16px;
}
.article-meta {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.meta-item {
display: flex;
align-items: center;
gap: 6px;
font-size: 14px;
color: #909399;
}
/* 文章内容 */
.article-content {
line-height: 1.8;
}
.lead-text {
font-size: 18px;
font-weight: 500;
color: #409eff;
margin-bottom: 24px;
padding: 16px;
background-color: #ecf5ff;
border-radius: 8px;
border-left: 4px solid #409eff;
}
.section-title {
font-size: 20px;
font-weight: 600;
color: #303133;
margin: 24px 0 12px 0;
}
.content-text {
color: #606266;
margin-bottom: 16px;
}
.feature-list {
margin: 16px 0;
padding-left: 0;
list-style: none;
}
.feature-list li {
margin-bottom: 8px;
padding: 8px 12px;
background-color: #f8f9fa;
border-radius: 6px;
border-left: 3px solid #e4e7ed;
}
.code-example {
margin: 24px 0;
padding: 20px;
background-color: #fafafa;
border-radius: 8px;
border: 1px solid #e4e7ed;
}
.example-title {
font-size: 16px;
font-weight: 600;
color: #409eff;
margin-bottom: 12px;
}
.code-block {
background-color: #282c34;
color: #abb2bf;
padding: 16px;
border-radius: 6px;
font-family: 'Courier New', 'Monaco', 'Menlo', monospace;
font-size: 14px;
line-height: 1.5;
overflow-x: auto;
margin: 0;
}
/* 文章底部 */
.article-footer {
margin-top: 32px;
padding-top: 20px;
border-top: 1px solid #e4e7ed;
}
.footer-text {
color: #606266;
margin-bottom: 16px;
font-style: italic;
}
.tags {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.tag {
padding: 4px 12px;
background-color: #f0f2f5;
color: #606266;
border-radius: 16px;
font-size: 12px;
transition: all 0.3s ease;
}
.tag:hover {
background-color: #409eff;
color: white;
}
/* 响应式设计 */
@media (max-width: 768px) {
.article {
padding: 20px;
}
.article-title {
font-size: 22px;
}
.article-meta {
flex-direction: column;
gap: 8px;
}
.lead-text {
font-size: 16px;
padding: 12px;
}
.section-title {
font-size: 18px;
}
}
</style>
实践练习
练习1:基础文本展示
创建一个包含所有文本类型和大小的展示页面。
练习2:文本截断应用
实现一个新闻列表,使用文本截断功能显示新闻摘要。
练习3:排版系统应用
创建一个博客文章页面,应用完整的排版系统。
练习4:交互式文本组件
实现一个可编辑的文本展示组件,支持切换编辑和预览模式。
设计原则
- 可读性优先:确保文本具有良好的对比度和合适的字体大小
- 层次分明:使用不同的文本样式建立清晰的信息层次
- 一致性:保持整个应用中文本样式的一致性
- 语义化:使用合适的 HTML 标签和 ARIA 属性
- 响应式:确保文本在不同设备上都有良好的显示效果
学习资源
作业
- 基础作业:创建一个包含所有文本组件类型的展示页面
- 进阶作业:实现一个新闻文章页面,应用完整的排版系统
- 挑战作业:设计一个支持主题切换的文本展示组件
总结
Text 文本组件和 Link 链接组件是构建用户界面的基础元素。通过合理使用这些组件,结合良好的排版原则,可以创建出既美观又易读的文本界面。掌握这些基础组件的使用方法,对于提升整体的用户体验具有重要意义。
学习日期: ___________ 完成状态: ___________ 学习笔记:
遇到的问题:
解决方案: