Skip to content

Button Glyph 图元

🏅原创

科幻按钮-图元 是 TechUI Tui Button 系列中的图标增强型组件

它专为 “图标 + 文本 (Icon + Label)” 的组合形态而生。与普通按钮仅将图标作为点缀不同,该组件强制(或强烈建议)配置图标,并将图标视为具有独立语义的 “功能图元 (Functional Glyph)”

这种强化视觉层级的设计,使其非常适合用于 工具栏 (Toolbar)带有明确语义的操作项(如:保存、删除、上传)或 功能菜单,能够极大提升用户对按钮功能的识别效率。

提示:该组件可以通过 TuiButtonB1 或其语义化别名 TuiButtonGlyph 进行调用。

分割线风格

默认为 A型图元特征:在图标与文本之间增加了一条垂直分割线,将两者在视觉上进行轻度隔离,适合功能明确的工具栏按钮。

vue
<template>
  <div class="demo-row">
    <TuiButtonGlyph icon="tui-icon ti-home">Default</TuiButtonGlyph>
    <TuiButtonGlyph type="primary" icon="tui-icon ti-settings">Primary</TuiButtonGlyph>
    <TuiButtonGlyph type="success" icon="tui-icon ti-check">Success</TuiButtonGlyph>
    <TuiButtonGlyph type="danger" icon="tui-icon ti-close">Danger</TuiButtonGlyph>
  </div>
  
  <div class="demo-row">
    <TuiButtonGlyph plain icon="tui-icon ti-home">Plain Default</TuiButtonGlyph>
    <TuiButtonGlyph plain type="warning" icon="tui-icon ti-alert">Plain Warning</TuiButtonGlyph>
  </div>
</template>

<style scoped>
.demo-row {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
</style>

独立边框风格

通过设置 decoType="B" 启用。 特征:图标被一个独立的矩形镂空框包裹,与文本区域形成明确的模块区分,机械感较强。

vue
<template>
  <div class="demo-row">
    <TuiButtonGlyph decoType="B" icon="tui-icon ti-home">Default</TuiButtonGlyph>
    <TuiButtonGlyph decoType="B" type="invert" icon="tui-icon ti-search">Invert</TuiButtonGlyph>
    <TuiButtonGlyph decoType="B" type="primary" icon="tui-icon ti-star">Primary</TuiButtonGlyph>
    <TuiButtonGlyph decoType="B" type="info" icon="tui-icon ti-info">Info</TuiButtonGlyph>
  </div>

  <div class="demo-row">
    <TuiButtonGlyph decoType="B" plain type="emphasis" icon="tui-icon ti-bolt">Emphasis</TuiButtonGlyph>
    <TuiButtonGlyph decoType="B" plain type="success" icon="tui-icon ti-check">Success</TuiButtonGlyph>
  </div>
</template>

<style scoped>
.demo-row {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
</style>

胶囊/圆形风格

通过设置 decoType="C" 启用。 特征:是 Type B 的变体,将矩形边框改为圆形或胶囊形(取决于整体圆角设置),视觉更加柔和。

vue
<template>
  <div class="demo-row">
    <TuiButtonGlyph decoType="C" icon="tui-icon ti-home">Default</TuiButtonGlyph>
    <TuiButtonGlyph decoType="C" type="primary" icon="tui-icon ti-user">User</TuiButtonGlyph>
    <TuiButtonGlyph decoType="C" type="success" icon="tui-icon ti-check">Done</TuiButtonGlyph>
  </div>
  
  <div class="demo-row">
    <TuiButtonGlyph decoType="C" plain type="danger" icon="tui-icon ti-lock">Locked</TuiButtonGlyph>
    <TuiButtonGlyph decoType="C" plain type="warning" icon="tui-icon ti-bell">Notice</TuiButtonGlyph>
  </div>
</template>

<style scoped>
.demo-row {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
</style>

图标位置

通过 iconPosition 属性控制图标的显示位置。

  • start (默认): 图标在左侧。
  • end: 图标在右侧。
vue
<template>
  <div class="demo-label">Start (Default) vs End</div>
  <div class="demo-row">
    <TuiButtonGlyph type="primary" icon="tui-icon ti-arrow-left">Prev</TuiButtonGlyph>
    
    <TuiButtonGlyph type="primary" iconPosition="end" icon="tui-icon ti-arrow-right">Next</TuiButtonGlyph>
    
    <TuiButtonGlyph decoType="B" type="emphasis" iconPosition="end" icon="tui-icon ti-export">Export</TuiButtonGlyph>
  </div>
</template>

<style scoped>
.demo-label {
  font-size: 12px;
  color: var(--vp-c-text-2);
  margin: 10px 0 5px;
}
.demo-row {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
</style>

尺寸与状态

支持 size (large/small) 与 disabled 状态。

  • decoOffset: 可用于微调图标区域与文本区域的间距。
vue
<template>
  <div class="demo-label">Sizes</div>
  <div class="demo-row">
    <TuiButtonGlyph size="large" type="primary" icon="tui-icon ti-home">Large</TuiButtonGlyph>
    <TuiButtonGlyph type="primary" icon="tui-icon ti-home">Default</TuiButtonGlyph>
    <TuiButtonGlyph size="small" type="primary" icon="tui-icon ti-home">Small</TuiButtonGlyph>
  </div>

  <div class="demo-label">Disabled State</div>
  <div class="demo-row">
    <TuiButtonGlyph decoType="A" disabled icon="tui-icon ti-home">Disabled A</TuiButtonGlyph>
    <TuiButtonGlyph decoType="B" disabled type="primary" icon="tui-icon ti-settings">Disabled B</TuiButtonGlyph>
    <TuiButtonGlyph decoType="C" disabled plain type="warning" icon="tui-icon ti-alert">Disabled C</TuiButtonGlyph>
  </div>
</template>

<style scoped>
.demo-label {
  font-size: 12px;
  color: var(--vp-c-text-2);
  margin: 10px 0 5px;
}
.demo-row {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}
</style>

API 参考

Props

TuiButtonGlyph 继承了基础 TuiButton 的通用属性。

参数说明类型可选值默认值
type按钮类型 (颜色主题)stringdefault / invert / focus / info / primary / success / warning / danger / emphasisdefault
plain是否为朴素按钮boolean-false
disabled是否禁用boolean-false
size尺寸stringlarge / small-
icon图标类名 (必须)string--
customColor自定义颜色string / Array--

以下是该组件特有的属性。

参数说明类型可选值默认值适用类型
decoType图元风格类型stringA (分割线) / B (方框) / C (圆框)AAll
iconPosition图标位置stringstart / endstartAll
decoOffset图标与文本的间距修正number--All

Slots

插槽名说明
default按钮文本内容
icon图标插槽 (若需自定义 SVG 等复杂图标)

Events

事件名说明回调参数
click点击按钮时触发(event: Event)