Skip to content

Button 按钮

过去无法挽回,未来可以改变

基础用法

使用 typeplainroundcircle 来定义按钮的样式

<script setup lang="ts">
import { Alarm } from '@vicons/ionicons5'
</script>

<template>
  <div class="show-row">
    <c-button>Default</c-button>
    <c-button type="primary">Primary</c-button>
    <c-button type="success">Success</c-button>
    <c-button type="warning">Warning</c-button>
    <c-button type="danger">Danger</c-button>
    <c-button type="info">Info</c-button>
  </div>

  <div class="show-row">
    <c-button plain>Plain</c-button>
    <c-button type="primary" plain>Primary</c-button>
    <c-button type="success" plain>Success</c-button>
    <c-button type="warning" plain>Warning</c-button>
    <c-button type="danger" plain>Danger</c-button>
    <c-button type="info" plain>Info</c-button>
  </div>

  <div class="show-row">
    <c-button round>Round</c-button>
    <c-button type="primary" round>Primary</c-button>
    <c-button type="success" round>Success</c-button>
    <c-button type="warning" round>Warning</c-button>
    <c-button type="danger" round>Danger</c-button>
    <c-button type="info" round>Info</c-button>
  </div>

  <div class="show-row">
    <c-button circle :icon="Alarm" />
    <c-button type="primary" circle :icon="Alarm" />
    <c-button type="success" circle :icon="Alarm" />
    <c-button type="warning" circle :icon="Alarm" />
    <c-button type="danger" circle :icon="Alarm" />
    <c-button type="info" circle>
      <c-icon>
        <Alarm />
      </c-icon>
    </c-button>
  </div>
</template>

禁用状态

使用 disabled 属性即可完成实现按钮的禁用,此属性接收一个 Boolean 的值

<script setup lang="ts"></script>

<template>
  <div class="show-row">
    <c-button disabled>Default</c-button>
    <c-button type="primary" disabled>Primary</c-button>
    <c-button type="success" disabled>Success</c-button>
    <c-button type="info" disabled>Info</c-button>
    <c-button type="warning" disabled>Warning</c-button>
    <c-button type="danger" disabled>Danger</c-button>
  </div>

  <div class="show-row">
    <c-button disabled plain>Default</c-button>
    <c-button type="primary" disabled plain>Primary</c-button>
    <c-button type="success" disabled plain>Success</c-button>
    <c-button type="info" disabled plain>Info</c-button>
    <c-button type="warning" disabled plain>Warning</c-button>
    <c-button type="danger" disabled plain>Danger</c-button>
  </div>
</template>

图标按钮

使用 icon 属性即可实现插入图标,图标组件可以在 xicons 获取,下面将会展示几种不同的图标使用方式

<script setup lang="ts">
import { Alarm, Search, Airplane } from '@vicons/ionicons5'
import { AddCircle32Filled, SubtractCircle32Filled } from '@vicons/fluent'
</script>

<template>
  <div class="show-row">
    <c-button type="primary" :icon="Alarm" circle></c-button>
    <c-button type="primary" :icon="Search">搜索</c-button>
    <c-button type="primary" :icon="Search" icon-placement="right"
      >搜索</c-button
    >
    <c-button type="primary">
      <c-icon :size="18"> <AddCircle32Filled /> </c-icon>
      增加
    </c-button>
    <c-button type="primary">
      减少
      <c-icon :size="18"> <SubtractCircle32Filled /> </c-icon>
    </c-button>
    <c-button type="primary" icon-placement="right">
      <template #icon>
        <Airplane />
      </template>
      出行
    </c-button>
  </div>
</template>

按钮组

当你多项操作所属一类时,那么使用按钮组可能会有更好的效果

<script setup lang="ts">
import { Alarm, Boat, EarthSharp } from '@vicons/ionicons5'
import { ChevronLeft28Regular, ChevronRight28Regular } from '@vicons/fluent'
</script>

<template>
  <div class="show-row">
    <c-button-group type="primary">
      <c-button>
        <c-icon size="18">
          <ChevronLeft28Regular />
        </c-icon>
        上一页
      </c-button>
      <c-button>
        下一页
        <c-icon size="18">
          <ChevronRight28Regular />
        </c-icon>
      </c-button>
    </c-button-group>

    <c-button-group type="success">
      <c-button>
        <c-icon size="18">
          <Alarm />
        </c-icon>
      </c-button>
      <c-button>
        <c-icon size="18">
          <Boat />
        </c-icon>
      </c-button>
      <c-button>
        <c-icon size="18">
          <EarthSharp />
        </c-icon>
      </c-button>
    </c-button-group>
  </div>
</template>

加载状态按钮

使用 loading 的属性为 truefalse 来控制按钮的加载状态,loading-text 可以附加一些文本说明

<script setup lang="ts">
import { ref } from 'vue'

const loading1 = ref(false)
const loading2 = ref(false)

const handleClick1 = () => {
  loading1.value = true
  setTimeout(() => {
    loading1.value = false
  }, 3000)
}

const handleClick2 = () => {
  loading2.value = true
  setTimeout(() => {
    loading2.value = false
  }, 3000)
}
</script>

<template>
  <div class="show-row">
    <c-button :loading="loading1" @click="handleClick1" loading-text="..."
      >请点击-1</c-button
    >
    <c-button
      type="primary"
      :loading="loading2"
      @click="handleClick2"
      loading-text="......"
      >请点击-2</c-button
    >
  </div>
</template>

按钮尺寸

除了默认的大小之外,还提供 largesmall 两种尺寸供选择

<script setup lang="ts">
import { Alarm } from '@vicons/ionicons5'
</script>

<template>
  <div class="show-row">
    <c-button size="large">large</c-button>
    <c-button size="default">default</c-button>
    <c-button size="small">small</c-button>
    <c-button :icon="Alarm" size="large" circle />
    <c-button :icon="Alarm" size="default" circle />
    <c-button :icon="Alarm" size="small" circle />
  </div>
</template>

Button API

Button 属性

属性名说明类型默认值
type类型'' / 'primary' / 'success' / 'warning' / 'danger' / 'info'--
size尺寸'large' / 'default' / 'small' / ''--
plain是否为朴素按钮booleanfalse
round是否为圆角按钮booleanfalse
circle是否为圆形按钮booleanfalse
icon图标组件 xiconsobject--
icon-placementicon 位置'left' / 'right''left'
disabled是否禁用按钮booleanfalse
loading是否为加载中状态booleanfalse
loading-text加载时需要显示的文本string--
native-type原生 type 属性'submit' / 'button' / 'reset''button'

Button 事件

名称说明类型
click点击按钮后触发Function

Button 插槽

插槽名说明
default自定义默认内容
icon自定义图标组件

ButtonGroup API

ButtonGroup 属性

属性名说明类型默认值
type类型'' / 'primary' / 'success' / 'warning' / 'danger' / 'info'--
size尺寸'large' / 'default' / 'small'--

ButtonGroup 插槽

插槽名说明
default自定义默认内容

了解真相才能获得真正的自由