合同小程序前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
7.2 KiB

  1. # lime-radio 单选框
  2. - 在一组备选项中进行单选。
  3. ## 安装
  4. 在插件市场导入即可,首次导入可能需要重新编译
  5. ## 代码演示
  6. ### 基础演示
  7. 通过`allowUncheck`可设置单个是否允许取消选中
  8. ```html
  9. <l-radio allowUncheck>单选框</l-radio>
  10. ```
  11. ### 选项组
  12. 通过 v-model 绑定值当前选中项的 `value`或`name`,vue2使用的`value`被占用,故可以使用`name`。
  13. ```html
  14. <l-radio-group v-model="checked" @change="onChange">
  15. <l-radio value="Beijing" label="北京" />
  16. <l-radio value="Shanghai" label="上海" />
  17. <l-radio value="Guangzhou" label="广州" />
  18. <l-radio value="Shenzen" label="深圳" />
  19. </l-radio-group>
  20. <!-- vue2使用的`value`被占用,故可以使用`name` -->
  21. <l-radio-group v-model="checked" @change="onChange">
  22. <l-radio name="Beijing" label="北京" />
  23. <l-radio name="Shanghai" label="上海" />
  24. <l-radio name="Guangzhou" label="广州" />
  25. <l-radio name="Shenzen" label="深圳" />
  26. </l-radio-group>
  27. ```
  28. ```js
  29. const checked = ref('Beijing');
  30. ```
  31. ### 禁用
  32. 通过 `disabled` 属性禁止选项切换,在 Radio 上设置 `disabled` 可以禁用单个选项。
  33. ```html
  34. <l-radio-group v-model="checked" disabled>
  35. <l-radio value="Beijing" label="北京" />
  36. <l-radio value="Shanghai" label="上海" />
  37. <l-radio value="Guangzhou" label="广州" />
  38. <l-radio value="Shenzen" label="深圳" />
  39. </l-radio-group>
  40. ```
  41. ### 样式
  42. `icon` 属性可选值为 `line``dot`,单选框形状分别对应线勾和圆点形。
  43. ```html
  44. <l-radio-group icon="dot">
  45. <l-radio value="Beijing" label="北京" />
  46. <l-radio value="Guangzhou" label="广州" />
  47. <l-radio value="Shenzen" label="深圳" />
  48. </l-radio-group>
  49. <l-radio-group icon="line">
  50. <l-radio value="Beijing" label="北京" />
  51. <l-radio value="Guangzhou" label="广州" />
  52. <l-radio value="Shenzen" label="深圳" />
  53. </l-radio-group>
  54. ```
  55. ### 自定义颜色
  56. 通过 `checked-color` 属性设置选中状态的图标颜色。
  57. ```html
  58. <l-radio-group checked-color="#ee0a24">
  59. <l-radio value="Beijing" label="北京" />
  60. <l-radio value="Guangzhou" label="广州" />
  61. <l-radio value="Shenzen" label="深圳" />
  62. </l-radio-group>
  63. ```
  64. ### 自定义大小
  65. 通过 `icon-size` 属性可以自定义图标的大小。
  66. ```html
  67. <l-radio-group>
  68. <l-radio icon-size="44px" value="Beijing" label="北京" />
  69. <l-radio icon-size="34px" value="Guangzhou" label="广州" />
  70. <l-radio icon-size="24px" value="Shenzen" label="深圳" />
  71. </l-radio-group>
  72. ```
  73. ### 自定义图标
  74. 通过 icon 插槽自定义图标,并通过 slotProps 判断是否为选中状态。
  75. ```html
  76. <l-radio-group>
  77. <l-radio value="Beijing" label="北京">
  78. <template #icon="{checked}">
  79. <image v-show="checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png"></image>
  80. <image v-show="!checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png"></image>
  81. </template>
  82. </l-radio>
  83. <l-radio value="Guangzhou" label="广州">
  84. <template #icon="{checked}">
  85. <image v-show="checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png"></image>
  86. <image v-show="!checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png"></image>
  87. </template>
  88. </l-radio>
  89. <l-radio value="Shenzen" label="深圳">
  90. <template #icon="{checked}">
  91. <image v-show="checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png"></image>
  92. <image v-show="!checked" style="width:20px; height:20px" src="https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png"></image>
  93. </template>
  94. </l-radio>
  95. </l-radio-group>
  96. ```
  97. ### 插件标签
  98. - 默认 l-radio 为 component
  99. - 默认 lime-radio 为 demo
  100. ### 关于vue2的使用方式
  101. - 插件使用了`composition-api`, 如果你希望在vue2中使用请按官方的教程[vue-composition-api](https://uniapp.dcloud.net.cn/tutorial/vue-composition-api.html)配置
  102. - 关键代码是: 在main.js中 在vue2部分加上这一段即可.
  103. ```js
  104. // vue2
  105. import Vue from 'vue'
  106. import VueCompositionAPI from '@vue/composition-api'
  107. Vue.use(VueCompositionAPI)
  108. ```
  109. ## API
  110. ### Radio Props
  111. | 参数 | 说明 | 类型 | 默认值 |
  112. | --- | --- | --- | --- |
  113. | name | 标识符,通常为一个唯一的字符串或数字 | _string\|number_ | - |
  114. | value | 单选按钮的值 | _any_ | - |
  115. | allowUncheck | 是否允许取消选中 | _boolean_ | `false` |
  116. | checked | 是否选中 | _boolean_ | `false` |
  117. | disabled | 是否为禁用态 | _boolean_ | `false` |
  118. | icon | 自定义选中图标和非选中图标可选值`'circle' | 'line' | 'dot'` | _string_ | `circle` |
  119. | label | 主文案 | _string_ | `` |
  120. | fontSize | 文本大小 | _string_ | `` |
  121. | iconSize | 图标大小 | _string_ | `` |
  122. | checkedColor | 选中状态颜色 | _string_ | `` |
  123. | iconBgColor | 图标背景颜色 | _string_ | `` |
  124. | iconBorderColor | 图标描边颜色 | _string_ | `` |
  125. | iconDisabledColor | 图标禁用颜色 | _string_ | `` |
  126. | iconDisabledBgColor | 图标禁用背景颜色 | _string_ | `` |
  127. ### RadioGroup Props
  128. | 参数 | 说明 | 类型 | 默认值 |
  129. | --- | --- | --- | --- |
  130. | v-model | 标识符,通常为一个唯一的字符串或数字 | _string\|number_ | - |
  131. | name | 标识符,通常为一个唯一的字符串或数字 | _string\|number_ | - |
  132. | value | 单选按钮的值 | _any_ | - |
  133. | allowUncheck | 是否允许取消选中 | _boolean_ | `false` |
  134. | disabled | 是否为禁用态 | _boolean_ | `false` |
  135. | direction | 排列方向,可选值为vertical | _string_ | `horizontal` |
  136. | fontSize | 文本大小 | _string_ | `` |
  137. | iconSize | 图标大小 | _string_ | `` |
  138. | checkedColor | 选中状态颜色 | _string_ | `` |
  139. | iconBgColor | 图标背景颜色 | _string_ | `` |
  140. | iconBorderColor | 图标描边颜色 | _string_ | `` |
  141. | iconDisabledColor | 图标禁用颜色 | _string_ | `` |
  142. | iconDisabledBgColor | 图标禁用背景颜色 | _string_ | `` |
  143. ### Events
  144. | 事件名 | 说明 | 回调参数 |
  145. | ------ | ------------------------ | ---------------------- |
  146. | change | 当绑定值变化时触发的事件 | _currentValue: any_ |
  147. ### Radio Slots
  148. | 插槽名 | 说明 | 回调参数 |
  149. | ------ | ------------------------ | ---------------------- |
  150. | default | 自定义文本 | _-_ |
  151. | radio | 整体 | _{ checked: boolean, disabled: boolean }_ |
  152. | icon | 自定义图标 | _{ checked: boolean, disabled: boolean }_ |
  153. ## 主题定制
  154. ### 样式变量
  155. 组件提供了下列 CSS 变量,可用于自定义样式,uvue app无效。
  156. | 名称 | 默认值 | 描述 |
  157. | ------------------------ | -------------------- | ---- |
  158. | --l-radio-icon-size | _40rpx_ | - |
  159. | --l-radio-font-size | _32rpx_ | - |
  160. | --l-radio-icon-bg-color | _white_ | - |
  161. | --l-radio-border-icon-color | _$gray-5_ | - |
  162. | --l-radio-icon-disabled-color | _$gray-5_ | - |
  163. | --l-radio-icon-disabled-bg-color | _$gray-1_ | - |
  164. | --l-radio-icon-checked-color | _$primary-color_ | - |
  165. ## 打赏
  166. 如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。
  167. ![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/alipay.png)
  168. ![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/wpay.png)