Skip to content

Radio 单选

查看 sn-radio 的 2.0 版本差异

基础用法

  • 单选组件由三部分组成:sn-radio-group(单选组,管理选中状态与组级配置)、sn-radio(圆球形态选项)、sn-radio-tag(标签形态选项)。
  • sn-radio-groupv-model 绑定选中项的索引(0 为第一项),同一时刻只能选中一项;点击已选中的选项不会重复触发事件。
  • 每一个选项(sn-radiosn-radio-tag)必须是 sn-radio-group 的子代,选项自身不维护选中状态,需通过组控制。
  • 同一单选组内可混用 sn-radiosn-radio-tag,索引统一分配。
  • 选项默认自带右、下外边距,组内自动换行排列;verticaltrue 时纵向排列。
vue
<template>
	<sn-radio-group v-model="current">
		<sn-radio text="确定"></sn-radio>
		<sn-radio text="取消"></sn-radio>
		<sn-radio-tag text="稍后再说"></sn-radio-tag>
	</sn-radio-group>
</template>

<script lang="uts" setup>
const current = ref<number>(0)
</script>

更多演示请下载 demo 查看

组配置下发

sn-radio-group 上的尺寸、颜色与样式类等配置会统一下发到组内全部 sn-radio / sn-radio-tag(这些配置项构成组配置对象 RadioGroupConfig)。选项组件自身的同名属性(如 text-classtypelevel)优先级高于组配置,可单独覆盖某一选项的表现。尺寸类属性支持 $ 前缀动态尺寸(乘对应乘数),颜色类属性支持 $ 简写(如 $primary 自动引用主题色变量)。

圆球选项的呈现方式:未选中时圆球为 line 色描边、内部圆点为 front 色;选中时圆球填充主题色(默认 $primary)、内部圆点仍为 front 色,形成"彩环 + 白点"效果。

sn-radio 属性

参数说明类型默认值可选值
text圆球右侧的文本内容String''-
disabled是否禁用该选项Booleanfalsetrue | false
containStyle自定义选项整行容器样式(仅当前选项生效)UTSJSONObject | String''-
customStyle自定义圆球样式(仅当前选项生效)UTSJSONObject | String''-
textClass文本的外部样式类String''-
textStyle自定义文本样式(仅当前选项生效)UTSJSONObject | String''-

sn-radio-tag 属性

参数说明类型默认值可选值
text标签内部文本内容String''-
type标签主题类型,覆盖组配置 tag-typeString''(默认取组配置,兜底 primaryprimary | info | success | error | warning
level标签等级(选中态配色深浅),覆盖组配置 tag-levelString''(默认取组配置,兜底 secondfirst | second | third | least
disabled是否禁用该选项Booleanfalsetrue | false
customStyle自定义标签样式(仅当前选项生效)UTSJSONObject | String''-
textClass文本的外部样式类String''-

标签选项未选中时默认 info 色背景配 text 色文字;选中后配色由 typelevel 共同决定:

level背景文字
firsttype 对应原色(如 $primarytype 对应文字色(如 $primaryText
secondtype 对应浅色(如 $primaryLighttype 对应原色
thirdinfotype 对应原色
least透明type 对应原色

禁用时未选中为 disabled 底配 disabledText 字,选中为 disabledDark 底配 disabledDarkText 字。

sn-radio-group 属性

参数说明类型默认值可选值
v-model绑定值,当前选中项的索引Number0-
vertical是否纵向排列Booleanfalsetrue | false
radioSize圆球直径String | Number'20px'-
radioBorderWidth圆球边缘与内部圆点之间的间隙宽度(圆点直径 = 圆球直径 - 2 × 该值)String | Number'2px'-
radioTextSize选项文本大小String | Number''(默认 13px × fontsizeFactor)-
radioBgColor未选中时圆球内部圆点颜色String''(默认主题 front 色)-
disabledRadioBgColor禁用且未选中时圆点颜色String''(默认主题 front 色)-
radioActiveBgColor选中时圆点颜色String''(默认主题 front 色)-
disabledRadioActiveBgColor禁用且选中时圆点颜色String''(默认主题 front 色)-
radioTextColor选项文本颜色String''(默认主题 text 色)-
disabledRadioTextColor禁用状态下选项文本颜色String''(默认主题 disabledText 色)-
radioBorderColor未选中时圆球颜色String''(默认主题 line 色)-
disabledRadioBorderColor禁用且未选中时圆球颜色String''(默认主题 disabled 色)-
radioActiveBorderColor选中时圆球颜色String''(默认主题 primary 色)-
disabledRadioActiveBorderColor禁用且选中时圆球颜色String''(默认主题 disabledDark 色)-
tagType标签选项主题类型String'primary'primary | info | success | error | warning
tagLevel标签选项等级String'second'first | second | third | least
tagBorderRadius标签选项圆角String | Number'10px'-
tagPadding标签选项内边距String'6px 10px'-
tagTextSize标签选项文本大小String | Number''(默认 12px × fontsizeFactor)-
tagBgColor标签选项未选中时背景颜色String''(默认主题 info 色)-
disabledTagBgColor禁用且未选中时标签背景颜色String''(默认主题 disabled 色)-
tagActiveBgColor标签选项选中时背景颜色String''(默认由 tag-type + tag-level 决定)-
disabledTagActiveBgColor禁用且选中时标签背景颜色String''(默认主题 disabledDark 色)-
tagTextColor标签选项未选中时文本颜色String''(默认主题 text 色)-
disabledTagTextColor禁用且未选中时标签文本颜色String''(默认主题 disabledText 色)-
tagActiveTextColor标签选项选中时文本颜色String''(默认由 tag-type + tag-level 决定)-
disabledTagActiveTextColor禁用且选中时标签文本颜色String''(默认主题 disabledDarkText 色)-
radioContainStyle自定义圆球选项整行容器样式UTSJSONObject | String''-
radioStyle自定义圆球样式UTSJSONObject | String''-
tagStyle自定义标签选项样式UTSJSONObject | String''-
textStyle自定义选项文本样式UTSJSONObject | String''-
radioContainClass圆球选项整行容器的外部样式类String''-
radioClass圆球的外部样式类String''-
tagClass标签选项根节点的外部样式类String''-
textClass选项文本的外部样式类String''-
customStyle自定义单选组根节点样式UTSJSONObject | String''-

事件

sn-radio-group

名称类型说明
change(value: number) => Void选中项变化时触发,携带新选中的索引

插槽

sn-radio

名称说明
default替换圆球右侧的文本内容,可以是任意内容

sn-radio-tag

名称说明
default替换标签内部的文本内容,可以是任意内容

sn-radio-group

名称说明
default放置子组件 sn-radiosn-radio-tag

使用 MIT 协议