Radio 单选框

在一组备选项中进行单选

基础用法

单选框不应该有太多的可选项, 如果你有很多的可选项你应该使用选择框而不是单选框。

要使用 Radio 组件,只需要设置v-model绑定变量, 选中意味着变量的值为相应 Radio label属性的值, label可以是StringNumberBoolean

Radio 单选框 - 图1

  1. <template>
  2. <div class="mb-2 flex items-center text-sm">
  3. <el-radio-group v-model="radio1" class="ml-4">
  4. <el-radio label="1" size="large">Option 1</el-radio>
  5. <el-radio label="2" size="large">Option 2</el-radio>
  6. </el-radio-group>
  7. </div>
  8. <div class="my-2 flex items-center text-sm">
  9. <el-radio-group v-model="radio2" class="ml-4">
  10. <el-radio label="1">Option 1</el-radio>
  11. <el-radio label="2">Option 2</el-radio>
  12. </el-radio-group>
  13. </div>
  14. <div class="my-4 flex items-center text-sm">
  15. <el-radio-group v-model="radio3" class="ml-4">
  16. <el-radio label="1" size="small">Option 1</el-radio>
  17. <el-radio label="2" size="small">Option 2</el-radio>
  18. </el-radio-group>
  19. </div>
  20. <div class="mb-2 flex items-center text-sm">
  21. <el-radio-group v-model="radio3" disabled class="ml-4">
  22. <el-radio label="1" size="small">Option 1</el-radio>
  23. <el-radio label="2" size="small">Option 2</el-radio>
  24. </el-radio-group>
  25. </div>
  26. </template>
  27. <script lang="ts" setup>
  28. import { ref } from 'vue'
  29. const radio1 = ref('1')
  30. const radio2 = ref('1')
  31. const radio3 = ref('1')
  32. </script>

禁用状态

disabled 属性可以用来控制单选框的禁用状态。

你只需要为单选框设置 disabled 属性就能控制其禁用状态。

Radio 单选框 - 图2

  1. <template>
  2. <el-radio v-model="radio" disabled label="disabled">Option A</el-radio>
  3. <el-radio v-model="radio" disabled label="selected and disabled"
  4. >Option B</el-radio
  5. >
  6. </template>
  7. <script lang="ts" setup>
  8. import { ref } from 'vue'
  9. const radio = ref('selected and disabled')
  10. </script>

单选框组

适用于在多个互斥的选项中选择的场景

结合el-radio-group元素和子元素el-radio可以实现单选组, 为 el-radio-group 绑定 v-model,再为 每一个 el-radio 设置好 label 属性即可, 另外,还可以通过 change 事件来响应变化,它会传入一个参数 value 来表示改变之后的值。

Radio 单选框 - 图3

  1. <template>
  2. <el-radio-group v-model="radio">
  3. <el-radio :label="3">Option A</el-radio>
  4. <el-radio :label="6">Option B</el-radio>
  5. <el-radio :label="9">Option C</el-radio>
  6. </el-radio-group>
  7. </template>
  8. <script lang="ts" setup>
  9. import { ref } from 'vue'
  10. const radio = ref(3)
  11. </script>

按钮样式

你可以让单选框看起来像一个按钮一样。

只需要把 el-radio 元素换成 el-radio-button 元素即可, 此外,Element Plus 还提供了 size 属性用来控制单选框的大小。

Radio 单选框 - 图4

  1. <template>
  2. <div>
  3. <el-radio-group v-model="radio1" size="large">
  4. <el-radio-button label="New York" />
  5. <el-radio-button label="Washington" />
  6. <el-radio-button label="Los Angeles" />
  7. <el-radio-button label="Chicago" />
  8. </el-radio-group>
  9. </div>
  10. <div style="margin-top: 20px">
  11. <el-radio-group v-model="radio2">
  12. <el-radio-button label="New York" />
  13. <el-radio-button label="Washington" />
  14. <el-radio-button label="Los Angeles" />
  15. <el-radio-button label="Chicago" />
  16. </el-radio-group>
  17. </div>
  18. <div style="margin-top: 20px">
  19. <el-radio-group v-model="radio3" size="small">
  20. <el-radio-button label="New York" />
  21. <el-radio-button label="Washington" disabled />
  22. <el-radio-button label="Los Angeles" />
  23. <el-radio-button label="Chicago" />
  24. </el-radio-group>
  25. </div>
  26. </template>
  27. <script lang="ts" setup>
  28. import { ref } from 'vue'
  29. const radio1 = ref('New York')
  30. const radio2 = ref('New York')
  31. const radio3 = ref('New York')
  32. </script>

带有边框

设置 border 属性为 true 可以渲染为带有边框的单选框。

Radio 单选框 - 图5

  1. <template>
  2. <div>
  3. <el-radio-group v-model="radio1">
  4. <el-radio label="1" size="large" border>Option A</el-radio>
  5. <el-radio label="2" size="large" border>Option B</el-radio>
  6. </el-radio-group>
  7. </div>
  8. <div style="margin-top: 20px">
  9. <el-radio-group v-model="radio2">
  10. <el-radio label="1" border>Option A</el-radio>
  11. <el-radio label="2" border>Option B</el-radio>
  12. </el-radio-group>
  13. </div>
  14. <div style="margin-top: 20px">
  15. <el-radio-group v-model="radio3" size="small">
  16. <el-radio label="1" border>Option A</el-radio>
  17. <el-radio label="2" border disabled>Option B</el-radio>
  18. </el-radio-group>
  19. </div>
  20. <div style="margin-top: 20px">
  21. <el-radio-group v-model="radio4" size="small" disabled>
  22. <el-radio label="1" border>Option A</el-radio>
  23. <el-radio label="2" border>Option B</el-radio>
  24. </el-radio-group>
  25. </div>
  26. </template>
  27. <script lang="ts" setup>
  28. import { ref } from 'vue'
  29. const radio1 = ref('1')
  30. const radio2 = ref('1')
  31. const radio3 = ref('1')
  32. const radio4 = ref('1')
  33. </script>

Radio 属性

属性说明类型可选值默认值
model-value / v-model选中项绑定值string / number / boolean
label单选框对应的值string / number / boolean
disabled是否禁用单选框booleanfalse
border是否显示边框booleanfalse
sizeRadio 的尺寸stringlarge / default /small
name原生 name 属性string

Radio 事件

事件名说明回调参数
change绑定值变化时触发的事件选中的 Radio label 值

Radio 插槽

插槽名说明
自定义默认内容

Radio-group 属性

属性说明类型可选值默认值
model-value / v-model绑定值string / number / boolean
size单选框组尺寸stringlarge / default / smalldefault
disabled是否禁用booleanfalse
text-color按钮形式的 Radio 激活时的文本颜色string#ffffff
fill按钮形式的 Radio 激活时的填充色和边框色string#409EFF
validate-event输入时是否触发表单的校验boolean-true

Radio-group 事件

事件名说明回调参数
change绑定值变化时触发的事件选中的 Radio label 值

Radio-group 插槽

插槽名说明子标签
自定义默认内容Radio / Radio-button

Radio-button 属性

属性说明类型可选值默认值
labelradio 的 valuestring / number
disabled是否禁用booleanfalse
name原生 name 属性string

Radio-button 插槽

插槽名说明
默认插槽内容

源代码

组件 Radio 单选框 - 图6 文档 Radio 单选框 - 图7

贡献者

Radio 单选框 - 图8 云游君

Radio 单选框 - 图9 三咲智子

Radio 单选框 - 图10 JeremyWuuuuu

Radio 单选框 - 图11 Xc

Radio 单选框 - 图12 Delyan Haralanov

Radio 单选框 - 图13 undefined-design

Radio 单选框 - 图14 kooriookami

Radio 单选框 - 图15 msidolphin

Radio 单选框 - 图16 Hefty

Radio 单选框 - 图17 zz

Radio 单选框 - 图18 류한경

Radio 单选框 - 图19 opengraphica

Radio 单选框 - 图20 bqy

Radio 单选框 - 图21 on the field of hope

Radio 单选框 - 图22 Hades-li

Radio 单选框 - 图23 Lee

Radio 单选框 - 图24 qiang