按钮用于触发一个操作,如提交表单。
import { createApp } from 'vue';
import { Button } from '@nutui/nutui-taro';
const app = createApp();
app.use(Button);
按钮支持 default、primary、info、warning、danger、success 六种类型,默认为 default。
:::demo
<template>
<nut-button type="primary">主要按钮</nut-button>
<nut-button type="info">信息按钮</nut-button>
<nut-button type="default">默认按钮</nut-button>
<nut-button type="danger">危险按钮</nut-button>
<nut-button type="warning">警告按钮</nut-button>
<nut-button type="success">成功按钮</nut-button>
</template>
:::
通过 plain 属性将按钮设置为朴素按钮,朴素按钮的文字为按钮颜色,背景为白色。
:::demo
<template>
<nut-button plain type="primary">朴素按钮</nut-button>
<nut-button plain type="info">朴素按钮</nut-button>
</template>
:::
通过 disabled 属性来禁用按钮,禁用状态下按钮不可点击。
:::demo
<template>
<nut-button disabled type="primary">禁用状态</nut-button>
<nut-button plain disabled type="info">禁用状态</nut-button>
<nut-button plain disabled type="primary">禁用状态</nut-button>
</template>
:::
通过 shape 属性设置按钮形状,支持圆形、方形按钮,默认为圆形。
:::demo
<template>
<nut-button shape="square" type="primary">方形按钮</nut-button>
<nut-button type="info">圆形按钮</nut-button>
</template>
:::
:::demo
<template>
<nut-button loading type="info"></nut-button>
<nut-button loading type="warning">加载中...</nut-button>
<nut-button :loading="isLoading" type="success" @click="changeLoading">Click me!</nut-button>
</template>
<script>
import { ref } from 'vue';
export default {
setup(props) {
let isLoading = ref(false);
const changeLoading = () => {
isLoading.value = true;
setTimeout(() => {
isLoading.value = false;
}, 3000);
};
return {
isLoading,
changeLoading
};
}
};
</script>
:::
:::demo
<template>
<nut-button shape="square" plain type="primary" icon="star-fill"></nut-button>
<nut-button shape="square" type="primary" icon="star">收藏</nut-button>
</template>
:::
参照 Icon 组件说明中的自定义图标,其中 icon-font-class-name 对应 Icon 组件的 font-class-name,icon-class-prefix 对应 Icon 组件的 class-prefix。
<template>
<nut-button shape="square" plain type="primary" icon-font-class-name="iconfont" icon-class-prefix="icon" icon="close"></nut-button>
</template>
支持 large、normal、small、mini 四种尺寸,默认为 normal。
:::demo
<template>
<nut-button size="large" type="primary">大号按钮</nut-button>
<nut-button type="primary">普通按钮</nut-button>
<nut-button size="small" type="primary">小型按钮</nut-button>
<nut-button size="mini" type="primary">迷你按钮</nut-button>
</template>
:::
按钮在默认情况下为行内块级元素,通过 block 属性可以将按钮的元素类型设置为块级元素,常用来实现通栏按钮。
:::demo
<template>
<nut-button block type="primary">块级元素</nut-button>
</template>
:::
通过 color 属性可以自定义按钮的颜色。 :::demo
<template>
<nut-button color="#7232dd">单色按钮</nut-button>
<nut-button color="#7232dd" plain>单色按钮</nut-button>
<nut-button color="linear-gradient(to right, #ff6034, #ee0a24)"> 渐变色按钮 </nut-button>
</template>
:::
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| type | 类型,可选值为 primary info warning danger success |
String | default |
| size | 尺寸,可选值为 large small mini |
String | normal |
| shape | 形状,可选值为 square |
String | round |
| color | 按钮颜色,支持传入 linear-gradient 渐变色 | String | - |
| plain | 是否为朴素按钮 | Boolean | false |
| disabled | 是否禁用按钮 | Boolean | false |
| block | 是否为块级元素 | Boolean | false |
| icon | 按钮图标,同 Icon 组件 name 属性 | String | - |
| icon-font-class-name | 自定义 icon 字体基础类名 | String | nutui-iconfont |
| icon-class-prefix | 自定义 icon 类名前缀,用于使用自定义图标 | String | nut-icon |
| loading | 按钮 loading 状态 | Boolean | false |
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| click | 点击按钮时触发 | event: MouseEvent |
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。
| 名称 | 默认值 | 描述 |
|---|---|---|
| --nut-button-border-radius | 25px | - |
| --nut-button-border-width | 1px | - |
| --nut-button-icon-width | 16px | - |
| --nut-button-default-bg-color | var(--nut-white) | - |
| --nut-button-default-border-color | rgba(204, 204, 204, 1) | - |
| --nut-button-default-color | rgba(102, 102, 102, 1) | - |
| --nut-button-default-padding | 0 18px | - |
| --nut-button-mini-padding | 0 12px | - |
| --nut-button-small-padding | 0 12px | - |
| --nut-button-small-height | 28px | - |
| --nut-button-mini-height | 24px | - |
| --nut-button-default-height | 38px | - |
| --nut-button-large-height | 48px | - |
| --nut-button-large-line-height | 46px | - |
| --nut-button-small-line-height | 26px | - |
| --nut-button-block-height | 48px | - |
| --nut-button-default-line-height | 36px | - |
| --nut-button-block-line-height | 46px | - |
| --nut-button-default-font-size | var(--nut-font-size-2) | - |
| --nut-button-large-font-size | var(--nut-button-default-font-size) | - |
| --nut-button-small-font-size | var(--nut-font-size-1) | - |
| --nut-button-mini-font-size | var(--nut-font-size-1) | - |
| --nut-button-mini-line-height | 1.2 | - |
| --nut-button-disabled-opacity | 0.68 | - |
| --nut-button-primary-color | var(--nut-white) | - |
| --nut-button-primary-border-color | var(--nut-primary-color) | - |
| --nut-button-primary-background-color | _linear-gradient( |
135deg,
var(--nut-primary-color) 0%,
var(--nut-primary-color-end) 100%
)_ | - | | --nut-button-info-color| var(--nut-white) | - | | --nut-button-info-border-color| rgba(73, 106, 242, 1) | - | | --nut-button-info-background-color| linear-gradient(315deg, rgba(73, 143, 242, 1) 0%, rgba(73, 101, 242, 1) 100%) | - | | --nut-button-success-color| var(--nut-white) | - | | --nut-button-success-border-color| rgba(38, 191, 38, 1) | - | | --nut-button-success-background-color| _linear-gradient(
135deg,
rgba(38, 191, 38, 1) 0%,
rgba(39, 197, 48, 1) 45%,
rgba(40, 207, 63, 1) 83%,
rgba(41, 212, 70, 1) 100%
)_ | - |
| --nut-button-danger-color| var(--nut-white) | - | | --nut-button-danger-border-color| rgba(250, 44, 25, 1) | - | | --nut-button-danger-background-color| rgba(250, 44, 25, 1) | - | | --nut-button-warning-color| var(--nut-white) | - | | --nut-button-warning-border-color| rgba(255, 158, 13, 1) | - | | --nut-button-warning-background-color| _linear-gradient(
135deg,
rgba(255, 158, 13, 1) 0%,
rgba(255, 167, 13, 1) 45%,
rgba(255, 182, 13, 1) 83%,
rgba(255, 190, 13, 1) 100%
)_ | - | | --nut-button-plain-background-color| var(--nut-white) | - | | --nut-button-small-round-border-radius| var(--nut-button-border-radius) | - |