Skip to content

Tag 标签 API ​

这一页只描述 Tag 组件族的可消费接口。可运行的真实示例见示例;使用场景和无障碍决策见指南。

Tag 族有两个组件:

组件作用
YueTag只读标签,用于展示状态、属性或分类。支持关闭按钮
YueCheckTag可选中标签,实现 role="checkbox" 语义,适合多选筛选

引入 ​

ts
// 单组件入口
import { YueTag, YueCheckTag } from '@yue-ui/vue/tag'
import '@yue-ui/design-tokens/index.css'
import '@yue-ui/vue/tag.css'

// 或者从根入口按名导入
import { YueTag, YueCheckTag } from '@yue-ui/vue'

也可以使用 @yue-ui/vue/plugin 全局注册。

YueTag ​

Props ​

Prop类型默认值说明
theme'default' | 'primary' | 'success' | 'warning' | 'danger''default'语义色角色
variant'filled' | 'tint' | 'outline' | 'tint-outline''filled'绘制方式:实色填充 / 淡色填充 / 描边 / 淡色+描边
size'sm' | 'md' | 'lg'YueConfig.size,默认 'md'尺寸
shape'square' | 'round''square'圆角形态
disabledbooleanfalse禁用:降低不透明度,阻止点击,隐藏关闭按钮
closablebooleanfalse显示关闭按钮;禁用时关闭按钮不渲染
tagstring | Component'span'自定义根元素标签或组件
colorstring—任意 CSS 颜色;覆盖 theme 的调色板,颜色自动推导
maxWidthnumber | string—标签文本最大宽度;超出截断并加 title。数字单位为 px

color 与 theme 互斥:传入 color 时组件根据亮度自动计算 filled 的文字色(白色或深色),并为其他变体推导背景色和边框色。

Emits ​

事件载荷触发条件
clickMouseEvent点击根元素,disabled 时不触发
closeMouseEvent点击关闭按钮,disabled 时不触发

Slots ​

插槽说明
default标签文本
icon前置图标,渲染在 .yue-tag__icon 内,自动添加 aria-hidden="true"
close-icon自定义关闭图标,替代默认的 IconX

透传属性 ​

class、style、id、aria-*、data-* 等非 prop 属性透传到根元素。class 会与组件自身的 class 合并,不会被覆盖。

YueCheckTag ​

Props ​

Prop类型默认值说明
modelValueboolean | undefinedundefined受控选中态;undefined 表示非受控模式
defaultCheckedbooleanfalse非受控模式的初始选中态
valuestring | number—该标签代表的值,通过 change 事件透出,用于外部 Set 管理
disabledbooleanfalse禁用:降低不透明度,移出 Tab 顺序,阻止交互
size'sm' | 'md' | 'lg'YueConfig.size,默认 'md'尺寸

受控与非受控:

  • 不传 modelValue(或传 undefined)=非受控:组件自己维护选中态,defaultChecked 设置初始值;
  • 传入 modelValue(true 或 false)=受控:选中态由父组件完全控制。

Emits ​

事件载荷触发条件
update:modelValueboolean用户切换选中态(含键盘 Space / Enter)
change{ checked: boolean; value?: string | number; e: MouseEvent | KeyboardEvent }同上,携带完整状态
clickMouseEvent点击时触发,disabled 时不触发

Slots ​

插槽说明
default标签文本

透传属性 ​

同 YueTag。class 合并,其他属性透传到根 <span>。

应用级配置 ​

ts
import YueUI from '@yue-ui/vue/plugin'
app.use(YueUI, { size: 'sm' })
配置项类型默认说明
size'sm' | 'md' | 'lg''md'组件未传 size 时的回落值

CSS 入口 ​

ts
import '@yue-ui/design-tokens/index.css' // 必须先加载
import '@yue-ui/vue/tag.css'             // 只加载 Tag 族
// 或:import '@yue-ui/vue/style.css'    // 加载全部组件样式

Token 映射 ​

类别Token
尺寸--tag-height-{sm/md/lg}、--tag-padding-inline-{sm/md/lg}、--tag-font-size-{sm/md/lg}
间距--tag-gap、--tag-padding-block
字重--tag-font-weight
形状--tag-border-radius、--tag-border-radius-round
边框--tag-border-width
关闭图标--tag-close-icon-size
禁用--tag-opacity-disabled
焦点--tag-focus-ring-color、--tag-focus-ring-width、--tag-focus-ring-offset
动效--tag-duration、--tag-ease
配色--tag-{theme}-{variant}-background/color/border-color(5 主题 × 4 变体 = 20 组)

无障碍输出 ​

  • YueTag 根元素默认是 <span>,不具备交互语义;监听了 @click 的标签应配合 tag prop 改用语义化元素(如 <button> 或 <a>)并提供可访问名称。
  • 关闭按钮是原生 <button type="button">,可访问名称取自 i18n key tag.closeLabel(中文:「移除标签」,英文:「Remove tag」)。
  • disabled 时根元素输出 aria-disabled="true",关闭按钮不渲染。
  • YueCheckTag 使用 role="checkbox" + aria-checked 表达选中态;aria-disabled="true" + tabindex="-1" 表达禁用;Space / Enter 键触发切换。
  • 图标插槽内容自动包裹 aria-hidden="true" 的容器,避免重复朗读。