Skip to content

Button Shade 暗影

🏅原创

科幻按钮-暗影 是 TechUI Tui Button 系列中的广谱装饰型组件

它专注于 “多态边界 (Polymorphic Borders)” 的演绎。它不仅仅是一个单一样式的按钮,而是一个拥有庞大变体库的集合体。

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

基础用法

默认为 A型暗影,在按钮的左右有两个明显的暗影效果。

vue
<template>
  <div class="demo-row">
    <TuiButtonShade>Default</TuiButtonShade>
    <TuiButtonShade type="primary">Primary</TuiButtonShade>
    <TuiButtonShade type="success">Success</TuiButtonShade>
    <TuiButtonShade type="warning">Warning</TuiButtonShade>
    <TuiButtonShade type="danger">Danger</TuiButtonShade>
    <TuiButtonShade type="emphasis">Emphasis</TuiButtonShade>
  </div>
  <div class="demo-row">
    <TuiButtonShade plain>Plain Default</TuiButtonShade>
    <TuiButtonShade type="primary" plain>Plain Primary</TuiButtonShade>
    <TuiButtonShade type="info" plain>Plain Info</TuiButtonShade>
  </div>
</template>

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

多样化风格

  • 通过 decoType 属性切换 A-J型 显示不同方向的暗影效果:
    • A:东西
    • B:南北
    • C:北侧
    • D:东侧
    • E:南侧
    • F:西侧
    • G:西北
    • H:东北
    • I:西南
    • J:东南
vue
<template>
  <div class="demo-label">Type B</div>
  <div class="demo-row">
    <TuiButtonShade decoType="B">Default</TuiButtonShade>
    <TuiButtonShade decoType="B" type="invert">Invert</TuiButtonShade>
    <TuiButtonShade decoType="B" type="primary" icon="tui-icon ti-star">Primary</TuiButtonShade>
  </div>

  <div class="demo-label">Type C & D</div>
  <div class="demo-row">
    <TuiButtonShade decoType="C" type="success">Type C Success</TuiButtonShade>
    <TuiButtonShade decoType="C" plain type="warning">Type C Plain</TuiButtonShade>
    <TuiButtonShade decoType="D" type="danger">Type D Danger</TuiButtonShade>
    <TuiButtonShade decoType="D" type="emphasis">Type D Emphasis</TuiButtonShade>
  </div>

  <div class="demo-label">Type E</div>
  <div class="demo-row">
    <TuiButtonShade decoType="E" type="info">Type E Info</TuiButtonShade>
    <TuiButtonShade decoType="E" type="primary" size="large">Large E</TuiButtonShade>
  </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>

几何控制

TuiButtonShade 的所有变体(A-J)均支持以下两个几何参数,用于微调按钮的物理外观:

  • borderRadius: 控制按钮的圆角半径。
  • decoThickness: 控制装饰边框或光影层的厚度。
vue
<template>
  <div class="demo-label">圆角控制 (borderRadius)</div>
  <div class="demo-row">
    <TuiButtonShade decoType="A" type="primary" :borderRadius="50">Radius 50</TuiButtonShade>
    <TuiButtonShade decoType="B" type="success" :borderRadius="8">Radius 8</TuiButtonShade>
    <TuiButtonShade decoType="C" type="warning" :borderRadius="0">Radius 0</TuiButtonShade>
  </div>

  <div class="demo-label">厚度控制 (decoThickness)</div>
  <div class="demo-row">
    <TuiButtonShade decoType="D" type="danger" :decoThickness="5">Thickness 5</TuiButtonShade>
    <TuiButtonShade decoType="E" type="info" :decoThickness="1">Thickness 1</TuiButtonShade>
    <TuiButtonShade decoType="F" type="emphasis" :decoThickness="4" :borderRadius="20">Mixed</TuiButtonShade>
  </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>

状态展示

支持 disabled (禁用) 与 plain (朴素) 状态。

vue
<template>
  <div class="demo-label">Disabled State</div>
  <div class="demo-row">
    <TuiButtonShade decoType="A" disabled>Disabled A</TuiButtonShade>
    <TuiButtonShade decoType="B" disabled type="primary">Disabled B</TuiButtonShade>
    <TuiButtonShade decoType="C" disabled plain type="warning">Disabled C Plain</TuiButtonShade>
  </div>
  
  <div class="demo-label">Custom Color</div>
  <div class="demo-row">
    <TuiButtonShade decoType="J" customColor="#8a2be2">Custom J</TuiButtonShade>
    <TuiButtonShade decoType="A" plain customColor="#00ced1">Custom A Plain</TuiButtonShade>
  </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>

API 参考

Props

TuiButtonShade 继承了基础 TuiButton 的部分通用属性。

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

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

参数说明类型可选值默认值适用类型
decoType装饰变体类型stringA / B / C / D / E / F / G / H / I / JAAll
borderRadius边框圆角大小number--All
decoThickness装饰/边框厚度number--All

Slots

插槽名说明
default按钮内容
icon图标插槽

Events

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