When to use
- Used to select a single state among multiple options.
- The difference from Select is that all available options in Radio are visible by default, making it easier for users to choose in comparison, so there should not be too many options.
Demos
How to import
<script setup lang="ts">
import { Radio, RadioGroup } from '@fibrous/semi-ui-vue';
</script>
Basic Usage
Code
<script setup lang="ts">
import { Radio } from '@fibrous/semi-ui-vue';
</script>
<template>
<Radio aria-label="单选示例" name="demo-radio">Radio</Radio>
</template>Extra Info
You can use the #extra slot to add extra information, which can hold any content.
Code
<script setup lang="ts">
import { Radio } from '@fibrous/semi-ui-vue';
</script>
<template>
<Radio aria-label="单选示例" name="demo-radio-extra">
Semi Design
<template #extra>Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统</template>
</Radio>
</template>Disabled
Code
<script setup lang="ts">
import { ref } from 'vue';
import { Button, Radio } from '@fibrous/semi-ui-vue';
const disabled = ref(true);
</script>
<template>
<div>
<Radio aria-label="单选示例" :defaultChecked="false" :disabled="disabled" name="demo-radio-disabled"> Disabled </Radio>
<br />
<Radio aria-label="单选示例" defaultChecked :disabled="disabled" name="demo-radio-defaultChecked-disabled"> Disabled </Radio>
<div :style="{ marginTop: '20px' }">
<Button type="primary" @click="disabled = !disabled">Toggle disabled</Button>
</div>
</div>
</template>Advanced Mode
You can set mode='advanced' to allow options be able to unchecked when clicked again.
Code
<script setup lang="ts">
import { ref } from 'vue';
import { Radio, type RadioChangeEvent } from '@fibrous/semi-ui-vue';
const checked = ref(true);
const onChange = (e: RadioChangeEvent) => console.log('radio checked', e.target.checked);
</script>
<template>
<Radio v-model="checked" aria-label="单选示例" mode="advanced" name="demo-radio-advanced" @change="onChange"> 允许取消选择 </Radio>
</template>Mutually Exclusive Set
You can use RadioGroup to create a set of mutually exclusive options.
Code
<script setup lang="ts">
import { ref } from 'vue';
import { Radio, RadioGroup, type RadioChangeEvent, type RadioValue } from '@fibrous/semi-ui-vue';
const value = ref<RadioValue | undefined>(1);
const onChange = (e: RadioChangeEvent) => console.log('radio checked', e.target.value);
</script>
<template>
<RadioGroup v-model="value" aria-label="单选组合示例" name="demo-radio-group" @change="onChange">
<Radio :value="1">A</Radio>
<Radio :value="2">B</Radio>
<Radio :value="3">C</Radio>
<Radio :value="4">D</Radio>
</RadioGroup>
</template>vertical arrangement
The radio elements in the group can be arranged horizontally or vertically by setting the direction property to the RadioGroup
Code
<script setup lang="ts">
import { Radio, RadioGroup } from '@fibrous/semi-ui-vue';
</script>
<template>
<RadioGroup aria-label="单选组合示例" direction="vertical" name="demo-radio-group-vertical">
<Radio :value="1">A</Radio>
<Radio :value="2">B</Radio>
<Radio :value="3">C</Radio>
<Radio :value="4">D</Radio>
</RadioGroup>
</template>Button Style
You can use type='button' to set the button style type radio, and the button type radio supports three sizes.
It should be noted that the button type radio selector does not support auxiliary text (extra) and vertical arrangement (direction='vertical').
Code
<script setup lang="ts">
import { Radio, RadioGroup, Space } from '@fibrous/semi-ui-vue';
const sizes = ['small', 'middle', 'large'] as const;
</script>
<template>
<Space align="start" spacing="loose" vertical>
<RadioGroup v-for="size in sizes" :key="size" aria-label="单选组合示例" :buttonSize="size" :defaultValue="1" :name="`demo-radio-${size}`" type="button">
<Radio :value="1">即时推送</Radio>
<Radio :value="2">定时推送</Radio>
<Radio :value="3">动态推送</Radio>
</RadioGroup>
</Space>
</template>Card Style
You can set type='card' to RadioGroup to achieve card style with background.
Code
<script setup lang="ts">
import { Radio, RadioGroup } from '@fibrous/semi-ui-vue';
const extra = 'Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统';
const items = [
{ value: 1, disabled: true },
{ value: 2, disabled: false },
{ value: 3, disabled: false },
];
</script>
<template>
<RadioGroup aria-label="单选组合示例" :defaultValue="2" direction="vertical" name="demo-radio-group-card" type="card">
<Radio v-for="item in items" :key="item.value" :disabled="item.disabled" :style="{ width: '280px' }" :value="item.value">
单选框标题
<template #extra>{{ extra }}</template>
</Radio>
</RadioGroup>
</template>Pure Card Style
You can set type='pureCard' to RadioGroup to achieve a pure card style with background and no radio.
Code
<script setup lang="ts">
import { Radio, RadioGroup } from '@fibrous/semi-ui-vue';
const extra = 'Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统';
const items = [
{ value: 1, disabled: true },
{ value: 2, disabled: false },
{ value: 3, disabled: false },
];
</script>
<template>
<RadioGroup aria-label="单选组合示例" :defaultValue="2" direction="vertical" name="demo-radio-group-pureCard" type="pureCard">
<Radio v-for="item in items" :key="item.value" :disabled="item.disabled" :style="{ width: '280px' }" :value="item.value">
单选框标题
<template #extra>{{ extra }}</template>
</Radio>
</RadioGroup>
</template>Options Configuration
You can pass an array of options to RadioGroup using options property to create a set.
Code
<script setup lang="ts">
import { ref } from 'vue';
import { RadioGroup, Space, type RadioChangeEvent, type RadioValue } from '@fibrous/semi-ui-vue';
const value1 = ref<RadioValue | undefined>('Guest');
const value2 = ref<RadioValue | undefined>('Developer');
const value3 = ref<RadioValue | undefined>('Maintainer');
const plainOptions = ['Guest', 'Developer', 'Maintainer'];
const options = [
{ label: 'Guest', value: 'Guest', extra: 'Semi Design', style: { width: '120px' } },
{ label: 'Developer', value: 'Developer', extra: 'Semi Design', style: { width: '120px' } },
{ label: 'Maintainer', value: 'Maintainer', extra: 'Semi Design', style: { width: '120px' } },
];
const optionsWithDisabled = [
{ label: 'Guest', value: 'Guest' },
{ label: 'Developer', value: 'Developer' },
{ label: 'Maintainer', value: 'Maintainer', disabled: true },
];
const log = (name: string, e: RadioChangeEvent) => console.log(`${name} checked`, e.target.value);
</script>
<template>
<Space align="start" spacing="loose" vertical>
<RadioGroup v-model="value1" aria-label="单选组合示例" name="demo-radio-group-1" :options="plainOptions" @change="log('radio1', $event)" />
<RadioGroup v-model="value2" aria-label="单选组合示例" name="demo-radio-group-2" :options="optionsWithDisabled" @change="log('radio2', $event)" />
<RadioGroup v-model="value3" aria-label="单选组合示例" name="demo-radio-group-3" :options="options" @change="log('radio3', $event)" />
</Space>
</template>API Reference
Radio
Props
| Property | Description | Type | Default |
|---|---|---|---|
| modelValue | Whether the radio is checked, controlled with v-model. Ignored inside a RadioGroup. | boolean | undefined |
| defaultChecked | Whether the radio is initially checked, for uncontrolled use. Ignored inside a RadioGroup. | boolean | semiDefault("Radio", "defaultChecked", false) |
| value | The radio's value, which a RadioGroup compares to decide whether it is checked. It is also the native input's value in form submission. | RadioValue | undefined |
| disabled | Whether the radio is disabled. | boolean | semiGlobalDefault("Radio", "disabled") |
| displayMode | When set to vertical, the radio is displayed as a block and takes a line of its own. | RadioDisplayMode | semiGlobalDefault("Radio", "displayMode") |
| mode | When set to advanced, a checked radio can be unchecked by clicking it or pressing Space. Inside a RadioGroup the group's mode applies. | RadioMode | semiDefault("Radio", "mode", "") |
| type | Style type: default, button, card or pureCard. Inside a RadioGroup the group's type applies. | RadioType | semiDefault("Radio", "type", "default") |
| addonStyle | Inline style of the container wrapping the content. | StyleValue | semiGlobalDefault("Radio", "addonStyle") |
| addonClassName | Class name of the container wrapping the content. | string | semiGlobalDefault("Radio", "addonClassName") |
| addonId | Id of the addon node, which aria-labelledby points to. Generated when omitted. | string | undefined |
| extraId | Id of the extra node, which aria-describedby points to. Generated when omitted. | string | undefined |
| prefixCls | CSS class name prefix. When omitted it falls back to the enclosing RadioGroup's value, then the global default. | string | undefined |
| preventScroll | Whether focusing prevents the browser from scrolling the element into view; applies to the focus method. | boolean | semiGlobalDefault("Radio", "preventScroll") |
Events
| Event | Description | Callback parameters |
|---|---|---|
| update:modelValue | Emitted when the checked state changes; drives v-model. | [checked: boolean] |
| change | Emitted when the checked state changes. The event's target is { checked, value, name, disabled }. | [event: RadioChangeEvent] |
Slots
| Slot | Description | Scope parameters |
|---|---|---|
| default | Label content of the radio, which is also the native input's accessible name. | any |
| extra | Supplementary text, which aria-describedby points to. Not rendered when type is button. | any |
Exposes
| Name | Description | Type |
|---|---|---|
| focus | Focuses the native input. | Type() => void |
| blur | Removes focus from the native input. | Type() => void |
class and style land on the root label element. id, name, tabindex, autofocus, aria-* and focus and blur listeners passed as attrs land on the inner native input; other native attributes and listeners (such as @mouseenter and @mouseleave) land on the root element. When both are set, the Radio's own name wins over the RadioGroup's. The extra slot is not rendered for the button type.
RadioGroup
Props
| Property | Description | Type | Default |
|---|---|---|---|
| modelValue | The selected value, controlled with v-model. | RadioValue | undefined |
| defaultValue | The value selected by default when uncontrolled. | RadioValue | semiGlobalDefault("RadioGroup", "defaultValue") |
| disabled | Whether the whole group is disabled. | boolean | semiDefault("RadioGroup", "disabled", false) |
| name | The name of every native input in the group. A unique value is generated per group when omitted. | string | semiGlobalDefault("RadioGroup", "name") |
| options | Declares the options as data. Each item is a string or { label, value, disabled, extra, class, style, addonId, addonStyle, addonClass, extraId }. | (string | RadioOptionItem)[] | semiGlobalDefault("RadioGroup", "options") |
| direction | Layout direction of the radios: horizontal or vertical. Not supported when type is button. | RadioDirection | semiDefault("RadioGroup", "direction", "horizontal") |
| mode | When set to advanced, a checked radio can be unchecked by clicking it or pressing Space, and the selected value becomes undefined. | RadioMode | semiDefault("RadioGroup", "mode", "") |
| type | Style type of every Radio in the group: default, button, card or pureCard. | RadioType | semiDefault("RadioGroup", "type", "default") |
| buttonSize | Button size when type is button: small, middle or large. | RadioGroupButtonSize | semiDefault("RadioGroup", "buttonSize", "middle") |
| prefixCls | CSS class name prefix. | string | semiGlobalDefault("RadioGroup", "prefixCls") |
Events
| Event | Description | Callback parameters |
|---|---|---|
| update:modelValue | Emitted when the selected value changes; drives v-model. The value is undefined when advanced mode unchecks the radio. | [value: RadioValue | undefined] |
| change | Emitted when the selected value changes. The event's target is { checked, value, name, disabled }. | [event: RadioChangeEvent] |
| blur | Emitted when focus leaves the whole group; moving focus between its radios does not emit it. | [event: FocusEvent] |
Slots
| Slot | Description | Scope parameters |
|---|---|---|
| default | Radio components in the group. Ignored when options is set. | any |
| label | Custom label of each item in options, with the option and index scope parameters. | RadioGroupOptionSlotProps |
| extra | Custom extra text of each item in options, with the option and index scope parameters. | RadioGroupOptionSlotProps |
Exposes
| Name | Description | Type |
|---|---|---|
| None |
Each item in options has the fields label, value, disabled, extra (string | number), class, style, addonId, addonStyle, addonClass and extraId, and no onChange. Use the #label and #extra scoped slots for custom content. class, style and native attributes passed as attrs land on the root element with role="radiogroup", and so do aria-required, aria-invalid and aria-errormessage; the aria-expanded, aria-haspopup, aria-controls and tabindex injected by Tooltip are not rendered.
Methods
Radio
Call them through a template ref to the component instance; see Exposes above.
Accessibility
ARIA
aria-label: used to explain the role of Radio or RadioGrouparia-labelledbypoints to the addon node, used to explain the content of Radioaria-describedbypoints to the extra node, which is used to explain the content of Radio
aria-required,aria-invalidandaria-errormessageapply to RadioGroup only and are set on therole="radiogroup"element. ARIA does not support them on a single Radio; when botharia-invalidandaria-errormessageare passed to it, the error message is linked to the input througharia-describedby
Keyboard and focus
WAI-ARIA: https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/
- RadioGroup can be focused, the initial focus acquisition rules are as follows:
- When there is no selected item in the RadioGroup, the initial focus is on the first Radio item;
- When there are selected items in the RadioGroup, the initial focus is on the selected Radio item.
- For radios belonging to the same radiogroup:
- You can use
Right arroworDown arrowto move the focus to the next Radio item, uncheck the previously focused Radio item, and select the currently focused Radio item; - You can Use
Left ArroworUp Arrowto move the focus to the previous Radio item, at the same time uncheck the previously focused Radio item, and select the currently focused Radio item.
- You can use
- If there is no item selected in the RadioGroup, you can use the
Spacekey to select the initial focus. mode="advanced"is still a radio: arrow keys move the selection as usual, and clicking the selected item or pressingSpaceon it unchecks it.
Content Guidelines
- Capitalize the first letter
- No punctuation
Design Tokens
| Sass variable | Value | Usage |
|---|---|---|
| $transition_duration-radio-bg | var(--semi-transition_duration-none) | 单选框-背景色-动画持续时间 |
| $transition_function-radio-bg | var(--semi-transition_function-easeIn) | 单选框-背景色-过渡曲线 |
| $transition_delay-radio-bg | var(--semi-transition_delay-none) | 单选框-背景色-延迟时间 |
| $transition_duration-radio-border | var(--semi-transition_duration-none) | 单选框-边框-动画持续时间 |
| $transition_function-radio-border | var(--semi-transition_function-easeIn) | 单选框-边框-过渡曲线 |
| $transition_delay-radio-border | var(--semi-transition_delay-none) | 单选框-边框-延迟时间 |
| $color-radio_default-border-default | var(--semi-color-text-3) | 单选圆圈描边颜色 - 默认态 |
| $color-radio_default-bg-default | transparent | 单选圆圈背景颜色 - 默认态 |
| $color-radio_default-bg-hover | var(--semi-color-fill-0) | 单选圆圈背景颜色 - 悬浮态 |
| $color-radio_default-bg-active | var(--semi-color-fill-1) | 单选圆圈背景颜色 - 按下态 |
| $color-radio_default-border-hover | var(--semi-color-focus-border) | 单选圆圈描边颜色 - 悬浮态 |
| $color-radio_checked-border-hover | var(--semi-color-primary-hover) | 选中状态单选圆圈描边颜色 - 悬浮态 |
| $color-radio_checked-border-active | var(--semi-color-primary-active) | 选中状态单选圆圈描边颜色 - 按下态 |
| $color-radio_default-text-default | var(--semi-color-text-0) | 选项文本颜色 |
| $color-radio_extra-text-default | var(--semi-color-text-2) | 辅助文本颜色 |
| $color-radio_primary-bg-hover | var(--semi-color-primary-hover) | 选中状态单选圆圈背景颜色 - 悬浮态 |
| $color-radio_primary-bg-active | var(--semi-color-primary-active) | 选中状态单选圆圈背景颜色 - 按下态 |
| $color-radio_primary-border-default | var(--semi-color-primary) | 选中状态单选圆圈描边颜色 - 默认态 |
| $color-radio_primary-bg-default | var(--semi-color-primary) | 选中状态单选圆圈背景颜色 - 默认态 |
| $color-radio_primary-text-default | var(--semi-white) | 选中状态单选圆圈中心圆点颜色 |
| $color-radio_checked-bg-disabled | var(--semi-color-primary-disabled) | 选中状态单选圆圈背景颜色 - 禁用态 |
| $color-radio_default-border-disabled | var(--semi-color-border) | 单选圆圈描边颜色 - 禁用态 |
| $color-radio_checked-border-disabled | var(--semi-color-primary-disabled) | 选中状态单选圆圈描边颜色 - 禁用态 |
| $color-radio_disabled-bg-default | var(--semi-color-disabled-fill) | 单选圆圈背景颜色 - 禁用态 |
| $color-radio_disabled-bg-hover | transparent | |
| $color-radio_disabled-text-default | var(--semi-color-disabled-text) | 禁用态文本颜色 |
| $color-radio_disabled-border-default | var(--semi-color-border) | 单选圆圈描边颜色 - 禁用态 |
| $color-radio_checked-icon-disabled | var(--semi-white) | 选中且禁用状态下中心圆点颜色 |
| $color-radio_buttonRadio-text-default | var(--semi-color-text-1) | 按钮样式单选文本颜色 |
| $color-radio_buttonRadio-bg-default | var(--semi-color-fill-0) | 按钮样式单选背景颜色 |
| $color-radio_buttonRadio-text-disabled | var(--semi-color-disabled-text) | 按钮样式单选禁用态文本颜色 |
| $color-radio_addon_buttonRadio-bg-hover | var(--semi-color-fill-1) | 按钮样式单选悬浮态背景色 |
| $color-radio_addon_buttonRadio-text-checked | var(--semi-color-primary) | 按钮样式单选选中项文字颜色 |
| $color-radio_addon_buttonRadio-bg-checked | var(--semi-color-bg-3) | 按钮样式单选选中项背景颜色 |
| $color-radio_cardRadioGroup-bg-default | transparent | 卡片样式单选默认背景色 |
| $color-radio_cardRadioGroup-bg-checked | var(--semi-color-primary-light-default) | 卡片样式单选选中态背景色 |
| $color-radio_cardRadioGroup_disabled-bg-checked | var(--semi-color-primary-light-default) | 卡片样式单选选中且禁用时的背景色 |
| $color-radio_cardRadioGroup_disabled-bg-active | transparent | 卡片样式单选禁用时的背景色 - 按下态 |
| $color-radio_cardRadioGroup-bg-hover | var(--semi-color-fill-0) | 卡片样式单选悬浮态背景色 |
| $color-radio_cardRadioGroup-bg-active | var(--semi-color-fill-1) | 卡片样式单选按下态背景色 |
| $color-radio_cardRadioGroup_border-default | transparent | 卡片样式单选默认描边颜色 |
| $color-radio_cardRadioGroup_border-active | var(--semi-color-primary) | 卡片样式单选选中态描边颜色 |
| $color-radio_cardRadioGroup_checked_border-active | var(--semi-color-primary-active) | 卡片样式单选选中态描边颜色 - 按下态 |
| $color-radio_cardRadioGroup_checked_border-hover | var(--semi-color-primary-hover) | 卡片样式单选选中态描边颜色 - 悬浮态 |
| $color-radio_cardRadioGroup_border_disabled-active | var(--semi-color-primary-disabled) | 卡片样式单选选中且禁用时的描边颜色 |
| $color-radio_cardRadioGroup_addon-text-default | var(--semi-color-text-0) | 卡片样式单选标题文字颜色 |
| $color-radio_cardRadioGroup_extra-text-default | var(--semi-color-text-2) | 卡片样式单选辅助文字颜色 |
| $color-radio_cardRadioGroup_checked_disabled-border-default | var(--semi-color-primary-disabled) | 卡片样式选中项禁用态描边颜色 - 默认态 |
| $color-radio_cardRadioGroup_checked_disabled-border-hover | var(--semi-color-primary-disabled) | 卡片样式选中项禁用态描边颜色 - 悬浮态 |
| $color-radio_card-bg-hover | var(--semi-color-white) | 卡片模式下单选圆圈背景颜色 - 悬浮态 |
| $color-radio_card-bg-active | var(--semi-color-white) | 卡片模式下单选圆圈背景颜色 - 按下态 |
| $color-radio_card-bg-default | var(--semi-color-white) | 卡片模式下单选圆圈背景颜色 - 默认态 |
| $color-radio_primary-outline-focus | $color-focus-ring | 轮廓颜色 - 按键聚焦 |
| $radius-radio_cardRadioGroup | var(--semi-border-radius-small) | 卡片式单选圆角大小 |
| $radius-radio_addon_buttonRadio | var(--semi-border-radius-small) | 按钮式单选圆点圆角大小 |
| $radius-radio_buttonRadio | var(--semi-border-radius-small) | 按钮式单选圆角大小 |
| $width-radio_cardRadioGroup_checked-border | 1px | 卡片式单选描边宽度 |
| $width-radio_cardRadioGroup_checked_disabled-border | 1px | 卡片式单选选中且禁用时的描边宽度 |
| $width-radio_hover-border | $border-thickness-control | 描边宽度 - 悬浮态 |
| $width-radio_disabled-border | $border-thickness-control | 描边宽度 - 禁用态 |
| $width-radio_innder-border | $border-thickness-control | 描边宽度 - 禁用态 |
| $width-radio-outline | $width-focus-ring | 单选框轮廓宽度 |
| $height-radio_inner_min | 20px | 单选按钮高度 |
| $width-radio_inner | $width-icon-medium | 单选按钮宽度 |
| $spacing-radio_addon-paddingLeft | $spacing-tight | 单选标题到单选按钮左侧边距 |
| $spacing-radio_addon_buttonRadio_large-paddingX | $spacing-loose | 大尺寸按钮式单选按钮水平内边距 |
| $spacing-radio_addon_buttonRadio_large-paddingY | $spacing-base-tight * 0.5 | 大尺寸按钮式单选按钮垂直内边距 |
| $spacing-radio_addon_buttonRadio_small-paddingX | $spacing-base | 小尺寸按钮式单选按钮水平内边距 |
| $spacing-radio_addon_buttonRadio_small-paddingY | $spacing-super-tight | 中尺寸按钮式单选按钮垂直内边距 |
| $spacing-radio_addon_buttonRadio_middle-paddingX | $spacing-base | 中尺寸按钮式单选按钮水平内边距 |
| $spacing-radio_addon_buttonRadio_middle-paddingY | $spacing-extra-tight | 中尺寸按钮式单选按钮垂直内边距 |
| $spacing-radio_content-rowGap | 4px | 内容行间距 |
| $spacing-radio_group_vertical-marginBottom | $spacing-base-tight | 垂直布局单选框组底部外边距 |
| $spacing-radio_group_horizontal-marginRight | $spacing-base | 水平单选框组右侧外边距 |
| $spacing-radio_buttonRadio-padding | $spacing-extra-tight | 按钮式单选内边距 |
| $spacing-radio_buttonRadioGroup_small-paddingX | $spacing-super-tight | 小尺寸按钮式单选组水平内边距 |
| $spacing-radio_buttonRadioGroup_small-paddingY | $spacing-extra-tight | 小尺寸按钮式单选组垂直内边距 |
| $spacing-radio_buttonRadioGroup_middle-padding | $spacing-extra-tight | 中尺寸按钮式单选组内边距 |
| $spacing-radio_buttonRadioGroup_large-padding | $spacing-extra-tight | 大尺寸按钮式单选组内边距 |
| $spacing-radio_buttonRadioGroup-paddingRight | $spacing-none | 中尺寸按钮式单选组右侧内边距 |
| $spacing-radio_cardRadioGroup-paddingX | $spacing-base | 卡片式单选组水平内边距 |
| $spacing-radio_cardRadioGroup-paddingY | $spacing-base-tight | 卡片式单选组垂直内边距 |
| $font-radio_buttonRadio_large-default-size | $font-size-regular | 大尺寸按钮式单选标题字体大小 |
| $font-radio_buttonRadio_small-default-size | $font-size-small | 中尺寸按钮式单选标题字体大小 |
| $font-radio_buttonRadio_middle-default-size | $font-size-small | 小尺寸按钮式单选标题字体大小 |
| $font-radio_buttonRadio-default-fontWeight | $font-weight-bold | 按钮式单选标题字重 - 默认态 |
| $font-radio_buttonRadio-hover-fontWeight | $font-weight-bold | 按钮式单选标题字重 - 悬浮态 |
| $font-radio_buttonRadio-checked-fontWeight | $font-weight-bold | 按钮式单选标题字重 - 选中态 |
| $font-radio_buttonRadioGroup_small-lineHeight | 16px | 小尺寸按钮式单选标题行高 |
| $font-radio_buttonRadioGroup_middle-lineHeight | 16px | 中尺寸按钮式单选标题行高 |
| $font-radio_buttonRadioGroup_large-lineHeight | 20px | 大尺寸按钮式单选标题行高 |
| $font-radio_cardRadioGroup_addon-size | $font-size-regular | 卡片式单选组标题字体大小 |
| $font-radio_cardRadioGroup_addon-fontWeight | $font-weight-bold | 卡片式单选组标题字体大小 |
| $font-radio_cardRadioGroup_addon-lineHeight | 20px | 卡片式单选组标题行高 |
| $font-radio_cardRadioGroup_extra-size | $font-size-regular | 卡片式单选组副标题字体大小 |
| $font-radio_cardRadioGroup_extra-fontWeight | normal | 卡片式单选组副标题字重 |
| $font-radio_cardRadioGroup_extra-lineHeight | 20px | 卡片式单选组副标题行高 |