Skip to content

Tag 标签

用于标记与分类。五种语义变体、两档尺寸,可关闭、可描边、可胶囊形。

语义变体

默认主要成功警告危险
vue
<SrTag>默认</SrTag>
<SrTag variant="primary">主要</SrTag>
<SrTag variant="success">成功</SrTag>
<SrTag variant="warning">警告</SrTag>
<SrTag variant="danger">危险</SrTag>
vue
<SrTag>默认</SrTag>
<SrTag variant="primary">主要</SrTag>
<SrTag variant="success">成功</SrTag>
<SrTag variant="warning">警告</SrTag>
<SrTag variant="danger">危险</SrTag>

用语义名而不是颜色名success 而不是 green): 切主题时颜色会变,语义不会。写 variant="green" 的代码在暗色主题下 往往需要重新挑一遍颜色。

尺寸

小标签中标签
vue
<SrTag size="sm">小标签</SrTag>
<SrTag size="md">中标签</SrTag>

可关闭

传入 closable 后出现关闭按钮。标签自身不移除自己—— 它不知道该从哪个数组里删,这属于宿主的数据管理。

点叉关闭可关闭
vue
<script setup>
import { ref } from 'vue'

const tags = ref(['Vue', 'Nuxt', 'TypeScript'])
</script>

<template>
  <SrTag
    v-for="(tag, i) in tags"
    :key="tag"
    closable
    @close="tags.splice(i, 1)"
  >
    {{ tag }}
  </SrTag>
</template>

胶囊形与描边

胶囊无描边胶囊 + 主要
vue
<SrTag round>胶囊</SrTag>
<SrTag :bordered="false" variant="primary">无描边</SrTag>

带前缀

prefix 插槽用于放一个小图标或状态点。

运行中 待审核
vue
<SrTag variant="success">
  <template #prefix><span class="dot" /></template>
  运行中
</SrTag>

Props

名称类型默认值说明
variant'default' | 'primary' | 'success' | 'warning' | 'danger''default'语义变体
size'sm' | 'md''md'尺寸
closablebooleanfalse是否显示关闭按钮
borderedbooleantrue是否显示描边
roundbooleanfalse是否胶囊形

插槽

名称说明
default标签文本
prefix文本前的内容(图标、状态点)

事件

事件说明
close点击关闭按钮时触发;标签不会自动移除,由宿主决定

无障碍

  • 关闭按钮带 aria-label="移除",且包含标签文本(如「移除 Vue」)—— 一组标签里若每个关闭按钮都只叫「关闭」,读屏用户无法区分它们
  • 关闭按钮可通过键盘聚焦,不是只有鼠标能点

自用组件库 · 源码分发 · 不发布 npm