“Tag” 组件是一种常见的用户界面元素,通常用于显示标签或标记,以标识或分类内容、数据、选项或元素。标签通常用于给用户提供快速的视觉参考,帮助他们理解、筛选、组织或分类信息。以下是关于 “Tag” 组件的介绍和特点:
标签显示:
多选和单选:
可关闭标签:
标签颜色:
自定义样式:
事件处理:
响应式设计:
可访问性:
标签云:
“Tag” 组件在许多应用程序中都有广泛的应用,用于帮助用户理解和浏览内容、分类信息、筛选数据等。它们通常出现在文章标签、商品分类、筛选条件、用户配置选项等场景中。许多前端框架和库提供了 “Tag” 组件的实现,或者你可以自行编写代码来创建适合你应用程序需求的标签功能。。
tag组件的交互也比较简单,需要实现的功能如下
需要先安装vue3-dxui
yarn add vue3-dxui
或者
npm install vue3-dxui
全局main.ts中引入css
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'vue3-dxui/dxui/dxui.css'
createApp(App).use(store).use(router).mount('#app')
按需引入
<script>
import { Tag } from 'vue3-dxui'
export default {
components: {
Tag
}
}
</script>

<Tag>12346</Tag>

<Tag :style="{color: '#c41d7f', borderColor: '#ffadd2',background: '#fff0f6' }">12346</Tag>
<Tag :style="{color: '#c41d7f', borderColor: '#ffadd2',background: '#fff0f6' }" closable>12346</Tag>
点击回调
<Tag @tagClick='handleClick'>点击回调</Tag>
<script>
export default {
components: {
Tag
},
setup() {
const handleClick = () => {
alert('你点击了标签')
}
return {
handleClick
}
}
}
</script>
关闭回调
<Tag @closeClick='closeClick' closable>点击回调</Tag>
<script>
export default {
components: {
Tag
},
setup() {
const closeClick = () => {
alert('你关掉了标签')
}
return {
closeClick
}
}
}
</script>
<template>
<div
@click="tagClick"
v-if="tagShow"
class="dx-tag-warpper"
:class="colorTagClass"
:style="style"
>
<div class="dx-tag-content">
<slot />
</div>
<span v-if="closable && !showTagClose" class="dx-tag-close" @click="closeTag">X</span>
<div v-if="showTagClose && closable" class="dx-tag-close" @click="closeTag">
<slot name="tagClose" />
</div>
</div>
</template>
<script lang="ts">
import {
PropType,
ref,
CSSProperties,
SetupContext
} from 'vue'
// import { useRouter } from 'vue-router'
import { useShowSlotOrDefaultNode } from '@/common/index'
import { Data } from './types/index'
export default {
props: {
// 标签是否可以关闭
closable: {
require: false,
default: false,
type: Boolean
},
style: Object as PropType<CSSProperties>,
// 彩色标签,内置了几种颜色,当然也可以自定义色彩
color: {
require: false,
default: '',
type: String
}
},
setup(props: Data, ctx: SetupContext) {
const tagShow = ref(true)
const colorTagClass = ref(`dx-color-tag-${props.color}`)
const showTagClose = useShowSlotOrDefaultNode(ctx, 'tagClose')
const closeTag = (e: Event) => {
tagShow.value = false
// 防止点击关闭时也触发tagClick
e.stopPropagation()
ctx.emit('closeClick', e)
}
const tagClick = (e: Event) => {
ctx.emit('tagClick', e)
}
return {
tagShow,
closeTag,
tagClick,
colorTagClass,
showTagClose
}
}
}
</script>
<style lang="scss" scoped>
@import '@/scss/layout.scss';
.dx-tag-warpper {
background: $background-color;
border: $border;
border-radius: 2px;
display: inline-block;
margin: 0 8px 8px 0;
padding: 2px 8px;
font-size: 12px;
.dx-tag-content {
display: inline-block;
}
.dx-tag-close {
display: inline-block;
margin-left: 4px;
cursor: pointer;
}
}
.dx-color-tag-purple {
border: 1px solid $purple-middle-color;
color: $purple-color;
background: $purple-light-color;
}
.dx-color-tag-red {
border: 1px solid $red-middle-color;
color: $red-color;
background: $red-light-color;
}
.dx-color-tag-blue {
border: 1px solid $blue-middle-color;
color: $blue-color;
background: $blue-light-color;
}
.dx-color-tag-green {
border: 1px solid $green-middle-color;
color: $green-color;
background: $green-light-color;
}
.dx-color-tag-orange {
border: 1px solid $orange-middle-color;
color: $orange-color;
background: $orange-light-color;
}
</style>
| 参数名称 | 说明 |
|---|---|
| closable | 标签是否可以关闭 boolean 默认为false |
| color | 彩色标签,内置了几种颜色,当然也可以自定义色彩 purple red blue green orange |
| 事件名称 | 说明 |
|---|---|
| @closeClick | 当tag被关闭时触发 |
| @tagClick | 当tag被点击时触发 |
dxui组件库是我个人搭建的vue3 前端交互组件库,倾向于pc网站的交互模式。
