1. 初识Element UI的el-tag组件
第一次接触Element UI的el-tag组件是在一个用户画像系统的开发中。当时需要给用户打上各种兴趣标签,比如"篮球"、"编程"、"旅游"这些。试过原生div+css的方案,发现样式不统一,交互功能也得从零开发。直到发现了el-tag这个现成的解决方案,简直像发现了宝藏。
el-tag本质上是一个封装好的标签组件,开箱即用。它最吸引我的地方在于:
- 内置了多种颜色主题(success、warning、danger等)
- 支持四种尺寸(mini、small、medium、large)
- 提供了三种视觉效果(dark、light、plain)
- 自带删除功能
- 完美支持Vue的数据绑定
html复制<el-tag type="success" size="small" closable>成功标签</el-tag>
这行简单的代码就能生成一个带删除按钮的绿色小标签。在实际项目中,el-tag特别适合用于:
- 用户兴趣标签
- 内容分类标签
- 状态标记
- 筛选条件展示
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础配置:让你的标签活起来
2.1 颜色与主题的搭配艺术
el-tag提供了五种预设颜色类型,通过type属性控制:
html复制<el-tag>默认</el-tag>
<el-tag type="success">成功</el-tag>
<el-tag type="info">信息</el-tag>
<el-tag type="warning">警告</el-tag>
<el-tag type="danger">危险</el-tag>
每种类型都有对应的语义化场景。比如在内容管理系统中,我用"success"表示已发布,"warning"表示待审核,"danger"表示已下架。
更妙的是effect属性,它能改变标签的视觉风格:
- dark:深色背景(默认)
- light:浅色背景
- plain:朴素边框风格
html复制<el-tag type="success" effect="dark">深色成功</el-tag>
<el-tag type="success" effect="light">浅色成功</el-tag>
<el-tag type="success" effect="plain">朴素成功</el-tag>
实际项目中,我常用dark风格做主要标签,light风格做次要标签,plain风格则用于需要弱化显示的标签。
2.2 尺寸控制的实用技巧
size属性控制标签大小,有四个可选值:
- mini:超小(适合密集展示)
- small:小(默认推荐)
- medium:中
- large:大
html复制<el-tag size="mini">超小</el-tag>
<el-tag size="small">小</el-tag>
<el-tag size="medium">中</el-tag>
<el-tag size="large">大</el-tag>
在用户画像系统中,我根据标签权重分配不同尺寸——核心标签用medium,普通标签用small,边缘标签用mini。这样一眼就能看出重点。
3. 动态交互:让标签动起来
3.1 数据绑定与列表渲染
el-tag最强大的地方在于它能完美配合Vue的数据绑定。通过v-for指令,可以轻松实现标签列表:
html复制<el-tag
v-for="tag in userTags"
:key="tag.id"
:type="tag.type"
closable
@close="removeTag(tag)"
>
{{ tag.name }}
</el-tag>
对应的data和methods:
javascript复制data() {
return {
userTags: [
{ id: 1, name: '前端开发', type: 'success' },
{ id: 2, name: 'Node.js', type: 'info' },
{ id: 3, name: 'UI设计', type: 'warning' }
]
}
},
methods: {
removeTag(tag) {
this.userTags = this.userTags.filter(t => t.id !== tag.id)
}
}
这种模式特别适合用户兴趣标签管理。数据变化会自动反映到界面上,开发效率极高。
3.2 标签的增删改查实战
在实际项目中,标签管理通常需要完整的CRUD功能。下面分享我在内容管理系统中的实现方案:
新增标签:
html复制<el-button @click="showAddDialog">添加标签</el-button>
<!-- 添加标签对话框 -->
<el-dialog title="添加标签" :visible.sync="addDialogVisible">
<el-input v-model="newTagName" placeholder="请输入标签名"></el-input>
<el-select v-model="newTagType" placeholder="请选择类型">
<el-option label="默认" value=""></el-option>
<el-option label="成功" value="success"></el-option>
<el
