# Radio ### Intro Single selection among multiple options. ### Install Register component globally via `app.use`, refer to [Component Registration](#/en-US/advanced-usage#zu-jian-zhu-ce) for more registration ways. ```js import { createApp } from 'vue'; import { RadioGroup, Radio } from 'vant'; const app = createApp(); app.use(Radio); app.use(RadioGroup); ``` ## Usage ### Basic Usage Use `v-model` to bind the name of checked radio. ```html Radio 1 Radio 2 ``` ```js import { ref } from 'vue'; export default { setup() { const checked = ref('1'); return { checked }; }, }; ``` ### Horizontal ```html Radio 1 Radio 2 ``` ### Disabled ```html Radio 1 Radio 2 ``` ### Custom Shape ```html Radio 1 Radio 2 ``` ### Custom Color ```html Radio 1 Radio 2 ``` ### Custom Icon Size ```html Radio 1 Radio 2 ``` ### Custom Icon Use icon slot to custom icon ```html Radio 1 Radio 2 ``` ```js import { ref } from 'vue'; export default { setup() { const checked = ref('1'); return { checked, activeIcon: 'https://img.yzcdn.cn/vant/user-active.png', inactiveIcon: 'https://img.yzcdn.cn/vant/user-inactive.png', }; }, }; ``` ### Disable Label Click ```html Radio 1 Radio 2 ``` ### Inside a Cell ```html ``` ## API ### Radio Props | Attribute | Description | Type | Default | | --- | --- | --- | --- | | name | Radio name | _any_ | - | | shape | Can be set to `square` | _string_ | `round` | | disabled | Whether to disable radio | _boolean_ | `false` | | label-disabled | Whether to disable label click | _boolean_ | `false` | | label-position | Can be set to `left` | _string_ | `right` | | icon-size | Icon size | _number \| string_ | `20px` | | checked-color | Checked color | _string_ | `#1989fa` | - | ### RadioGroup Props | Attribute | Description | Type | Default | | --- | --- | --- | --- | | v-model | Name of checked radio | _any_ | - | | disabled | Disable all radios | _boolean_ | `false` | | direction | Direction, can be set to `horizontal` | _string_ | `vertical` | | icon-size | Icon size of all radios | _number \| string_ | `20px` | | checked-color | Checked color of all radios | _string_ | `#1989fa` | - | ### Radio Events | Event | Description | Parameters | | ----- | ----------------------------- | ------------------- | | click | Emitted when radio is clicked | _event: MouseEvent_ | ### RadioGroup Events | Event | Description | Parameters | | ------ | -------------------------- | -------------- | | change | Emitted when value changed | _name: string_ | ### Radio Slots | Name | Description | SlotProps | | ------- | ------------ | ----------------------------------------- | | default | Custom label | - | | icon | Custom icon | _{ checked: boolean, disabled: boolean }_ | ### CSS Variables The component provides the following CSS variables, which can be used to customize styles. Please refer to [ConfigProvider component](#/en-US/config-provider). | Name | Default Value | Description | | --- | --- | --- | | --van-radio-size | _20px_ | - | | --van-radio-border-color | _var(--van-gray-5)_ | - | | --van-radio-transition-duration | _var(--van-animation-duration-fast)_ | - | | --van-radio-label-margin | _var(--van-padding-xs)_ | - | | --van-radio-label-color | _var(--van-text-color)_ | - | | --van-radio-checked-icon-color | _var(--van-primary-color)_ | - | | --van-radio-disabled-icon-color | _var(--van-gray-5)_ | - | | --van-radio-disabled-label-color | _var(--van-gray-5)_ | - | | --van-radio-disabled-background-color | _var(--van-border-color)_ | - |