Skip to content

n-radio 单选框 ​

圆环 + 实心圆点 + 文案的纯 CSS 单选控件(无原生 radio 元素,样式与行为全自绘)。推荐放进 n-radio-group 使用,由组容器统一管理选中值;也可以独立使用(checked + change 受控)。

  1. 单选语义:点击已选中项不会取消选中,也不派发事件;是否取消由页面状态决定
  2. 组内使用的单项不派发 change,由 n-radio-group 统一派发(回调参数为新选中项的值)

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
name 该项对应的值:组内选中后组容器 change 事件与 modelValue 携带的就是它;同一组内必须唯一 String "" -
checked 独立使用时的选中态(受控;放进 n-radio-group 时由组接管,本属性不参与) Boolean false -
disabled 禁用(保留配色降透明度并拦截点击;组内使用时叠加组级 disabled) Boolean false -
label 单选框右侧文案;留空只渲染圆环(触控区不变) String "" -
color 选中态颜色(圆环描边与实心圆点,实色值);留空取主题品牌色 String "" 与 css 相同
label-disabled 点击文案是否不切换选中(圆环仍可切换);文案含链接等可点内容时使用 Boolean false -
label-style 微调文案的行内样式,如 "font-weight:600"(页面 class 打不进组件内部) String "" 与 css 相同
custom-class 挂到根节点的额外 class(类需定义在组件样式表内) String "" -
custom-style 根节点行内样式,如 "margin-right:12px" 用于横排时拉开单项间距 String "" 与 css 相同

事件 ​

事件名 说明 回调参数
change 仅独立使用时触发(组内使用由组容器统一派发,单项不重复派发);点击已选中项不触发 该项的值(String)

插槽 ​

无(文案用 label)。

主题令牌 ​

令牌 默认值 说明
--n-radio-min-height 40px 单项最小高度(保触控目标不小于 40px)
--n-radio-padding-y 8px 单项上下内边距
--n-radio-circle-size 20px 圆环尺寸
--n-radio-dot-size 10px 选中态实心圆点尺寸
--n-radio-label-gap 10px 圆环与文案间距
--n-radio-label-size 15px 文案字号
--n-radio-disabled-opacity 0.5 禁用态整体透明度

实现说明 ​

机制 参考做法 本库做法 分歧理由
视觉形态 图标字体切换(选中/未选中两图标名)/ 多形态枚举(圆、方、点、勾、按钮)/ 描边圆点与实底对勾两型切换 纯 CSS 圆环 + 实心圆点单形态 单选平台语言恒圆(原生 radio、Material、iOS 一致),方形勾选形态由复选框族承担;纯 CSS 无字体依赖,任意选中色与深浅主题下形态稳定
选中色 activeColor / color prop,部分支持组级统一下发 单项 color 行内实色,留空挂品牌色令牌 值源收敛在组、色源收敛在成员最直白;组级下发属间接层,全局统一走令牌即可
未选中色 inactiveColor prop 主题中性描边令牌 未选中是"无语义"中性面,交主题令牌治理;单设 prop 易与深浅主题打架
label 点击 labelDisabled prop 相同(label-disabled,.stop 阻断冒泡到整行热区) 一致
组通信 组件树遍历 + 子项注册簿 provide/inject 字符串键下发上下文(current / disabled / select) 无注册簿即无成员增删的簿记同步负担,动态增删选项天然正确
独立使用 部分参考要求必须搭配组容器 支持(inject 落空即独立受控 checked + change) 单项独立场景真实存在(协议单选、卡片内嵌单点)
点击已选中 有派发与不派发两种 不派发(独立与组内一致) 单选语义不自行动取消,重复派发只添业务回调噪音
值通道 组 v-model 组 update:modelValue 与 change 同参同发 库内受控组件统一双事件通道;v-model 自动回写,change 供业务监听
不收项 图标插槽与自定义 label 插槽(作用域 checked)/ 文案图标左右位 / 组级下发尺寸与色 文案走 label prop;排列组合(左文右环等)由 n-cell 等布局组件承担 插槽文案与 label prop 双轨易混;本族非图标族(库内图标规范:图标族才走插槽);组合布局是布局组件的职责

记录 · 思考 · 创作