Tag 标签
标签 —— 3 种 variant、6 种 tone、3 种尺寸,可关闭、可圆角。
基础用法
tone 控制语义色,默认 neutral(灰色)。其他选项:primary / success / warning / danger / info。
背景
DefaultPrimarySuccessWarningDangerInfo
<script setup lang="ts">
import { CfTag } from '@chufix-design/vue';
</script>
<template>
<div class="demo-row">
<CfTag>Default</CfTag>
<CfTag tone="primary">Primary</CfTag>
<CfTag tone="success">Success</CfTag>
<CfTag tone="warning">Warning</CfTag>
<CfTag tone="danger">Danger</CfTag>
<CfTag tone="info">Info</CfTag>
</div>
</template>
import { CfTag } from '@chufix-design/react';
export default function Demo() {
return (
<>
<CfTag>Default</CfTag>
<CfTag tone="primary">Primary</CfTag>
<CfTag tone="success">Success</CfTag>
<CfTag tone="warning">Warning</CfTag>
<CfTag tone="danger">Danger</CfTag>
<CfTag tone="info">Info</CfTag>
</>
);
} 变体、尺寸与圆角
variant 与 tone 正交:solid / soft(默认)/ outline。rounded 切换到 pill 圆角。
背景
solidsoftoutline
solidsoftoutline
smmdlgrounded
<script setup lang="ts">
import { CfTag } from '@chufix-design/vue';
</script>
<template>
<div class="demo-stack">
<div class="demo-row">
<CfTag variant="solid" tone="primary">solid</CfTag>
<CfTag variant="soft" tone="primary">soft</CfTag>
<CfTag variant="outline" tone="primary">outline</CfTag>
</div>
<div class="demo-row">
<CfTag variant="solid" tone="danger">solid</CfTag>
<CfTag variant="soft" tone="danger">soft</CfTag>
<CfTag variant="outline" tone="danger">outline</CfTag>
</div>
<div class="demo-row">
<CfTag size="sm" tone="success">sm</CfTag>
<CfTag size="md" tone="success">md</CfTag>
<CfTag size="lg" tone="success">lg</CfTag>
<CfTag tone="success" rounded>rounded</CfTag>
</div>
</div>
</template>
<CfTag variant="solid" tone="primary">solid</CfTag>
<CfTag variant="soft" tone="primary">soft</CfTag>
<CfTag variant="outline" tone="primary">outline</CfTag>
<CfTag size="sm" tone="success">sm</CfTag>
<CfTag size="md" tone="success">md</CfTag>
<CfTag size="lg" tone="success">lg</CfTag>
<CfTag tone="success" rounded>rounded</CfTag> 可关闭
打开 closable 显示 × 按钮,点击触发 close / onClose。
背景
VueAstroTailwindTypeScript
<script setup lang="ts">
import { ref } from 'vue';
import { CfTag } from '@chufix-design/vue';
const tags = ref(['Vue', 'Astro', 'Tailwind', 'TypeScript']);
function remove(t: string) {
tags.value = tags.value.filter((x) => x !== t);
}
function reset() {
tags.value = ['Vue', 'Astro', 'Tailwind', 'TypeScript'];
}
</script>
<template>
<div class="demo-stack">
<div class="demo-row">
<CfTag v-for="t in tags" :key="t" tone="primary" closable @close="remove(t)">
{{ t }}
</CfTag>
<CfButton
v-if="!tags.length"
class="cf-btn cf-btn--soft cf-btn--sm"
@click="reset"
>全部清空,点这里恢复</CfButton>
</div>
</div>
</template>
{tags.map((t) => (
<CfTag
key={t}
tone="primary"
closable
onClose={() => setTags((xs) => xs.filter((x) => x !== t))}
>{t}</CfTag>
))} API
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
variant | 'solid' | 'soft' | 'outline' | 'soft' | 视觉变体 |
tone | 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral' | 语义色 |
size | 'sm' | 'md' | 'lg' | 'md' | 高度与字号 |
rounded | boolean | false | 圆角到 pill |
closable | boolean | false | 显示 × 关闭按钮 |
插槽 / Children
- Vue:默认插槽是文本;
leading具名插槽放图标。 - React:
children是文本;leadingprop 放图标节点。
反馈与讨论
Tag 标签 的讨论