import{o as s,a,y as n}from"./vue-libs.b44bc779.js";const l={class:"van-doc-markdown-body"},d=n(`

Button

Intro

Buttons are used to trigger an action, such as submitting a form.

Install

Register component globally via app.use, refer to Component Registration for more registration ways.

import { createApp } from 'vue';
import { Button } from 'vant';

const app = createApp();
app.use(Button);

Usage

Type

<van-button type="primary">Primary</van-button>
<van-button type="success">Success</van-button>
<van-button type="default">Default</van-button>
<van-button type="danger">Danger</van-button>
<van-button type="warning">Warning</van-button>

Plain

<van-button plain type="primary">Plain</van-button>
<van-button plain type="success">Plain</van-button>

Hairline

<van-button plain hairline type="primary">Hairline</van-button>
<van-button plain hairline type="success">Hairline</van-button>

Disabled

<van-button disabled type="primary">Disabled</van-button>
<van-button disabled type="success">Disabled</van-button>

Loading

<van-button loading type="primary" />
<van-button loading type="primary" loading-type="spinner" />
<van-button loading type="success" loading-text="Loading..." />

Shape

<van-button square type="primary">Square</van-button>
<van-button round type="success">Round</van-button>

Icon

<van-button icon="plus" type="primary" />
<van-button icon="plus" type="primary">Button</van-button>
<van-button
  icon="https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png"
  type="primary"
>
  Button
</van-button>

Size

<van-button type="primary" size="large">Large</van-button>
<van-button type="primary" size="normal">Normal</van-button>
<van-button type="primary" size="small">Small</van-button>
<van-button type="primary" size="mini">Mini</van-button>

Block Element

<van-button type="primary" block>Block Element</van-button>

Route

<van-button type="primary" url="https://github.com">URL</van-button>
<van-button type="primary" to="index">Vue Router</van-button>

Custom Color

<van-button color="#7232dd">Pure</van-button>
<van-button color="#7232dd" plain>Pure</van-button>
<van-button color="linear-gradient(to right, #ff6034, #ee0a24)">
  Gradient
</van-button>

API

Props

AttributeDescriptionTypeDefault
typeCan be set to primary success warning dangerstringdefault
sizeCan be set to large small ministringnormal
textTextstring-
colorColor, support linear-gradientstring-
iconLeft Iconstring-
icon-prefixIcon className prefixstringvan-icon
icon-positionIcon position, can be set to rightstringleft
tagHTML Tagstringbutton
native-typeNative Type Attributestringbutton
plainWhether to be plain buttonbooleanfalse
blockWhether to set display blockbooleanfalse
roundWhether to be round buttonbooleanfalse
squareWhether to be square buttonbooleanfalse
disabledWhether to disable buttonbooleanfalse
loadingWhether to show loading statusbooleanfalse
loading-textLoading textstring-
loading-typeLoading type, can be set to spinnerstringcircular
loading-sizeLoading icon sizenumber | string20px
urlLink URLstring-
toTarget route of the link, same as using vue-routerstring | object-
replaceIf true, the navigation will not leave a history recordbooleanfalse

Events

EventDescriptionArguments
clickEmitted when button is clicked and not disabled or loadingevent: MouseEvent
touchstartEmitted when button is touchedevent: TouchEvent

Slots

NameDescription
defaultDefault slot
icon v3.0.18Custom icon
loadingCustom loading icon

Types

The component exports the following type definitions:

import type {
  ButtonType,
  ButtonSize,
  ButtonProps,
  ButtonNativeType,
  ButtonIconPosition,
} from 'vant';

Theming

CSS Variables

The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.

NameDefault ValueDescription
--van-button-mini-height24px-
--van-button-mini-padding0 var(--van-padding-base)-
--van-button-mini-font-sizevar(--van-font-size-xs)-
--van-button-small-height32px-
--van-button-small-padding0 var(--van-padding-xs)-
--van-button-small-font-sizevar(--van-font-size-sm)-
--van-button-normal-font-sizevar(--van-font-size-md)-
--van-button-normal-padding0 15px-
--van-button-large-height50px-
--van-button-default-height44px-
--van-button-default-line-height1.2-
--van-button-default-font-sizevar(--van-font-size-lg)-
--van-button-default-colorvar(--van-text-color)-
--van-button-default-background-colorvar(--van-background-color-light)-
--van-button-default-border-colorvar(--van-border-color)-
--van-button-primary-colorvar(--van-white)-
--van-button-primary-background-colorvar(--van-primary-color)-
--van-button-primary-border-colorvar(--van-primary-color)-
--van-button-success-colorvar(--van-white)-
--van-button-success-background-colorvar(--van-success-color)-
--van-button-success-border-colorvar(--van-success-color)-
--van-button-danger-colorvar(--van-white)-
--van-button-danger-background-colorvar(--van-danger-color)-
--van-button-danger-border-colorvar(--van-danger-color)-
--van-button-warning-colorvar(--van-white)-
--van-button-warning-background-colorvar(--van-warning-color)-
--van-button-warning-border-colorvar(--van-warning-color)-
--van-button-border-widthvar(--van-border-width-base)-
--van-button-border-radiusvar(--van-border-radius-sm)-
--van-button-round-border-radiusvar(--van-border-radius-max)-
--van-button-plain-background-colorvar(--van-white)-
--van-button-disabled-opacityvar(--van-disabled-opacity)-
--van-button-icon-size1.2em-
--van-button-loading-icon-size20px-
`,22),e=[d],h={__name:"README",setup(p,{expose:t}){return t({frontmatter:{}}),(r,c)=>(s(),a("div",l,e))}};export{h as default};