🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### HRadio 组件 介绍:单选组件,使用场景比较常见,比如个人信息收集中的性别选择,做题系统中的单项选择题。为了适应大部分的需求,我为该组件设置了很多属性,比如可以设置组件的排列方向(水平或者垂直),文字的颜色,是否显示图标,图标的颜色大小等。下面用一张表格来详细介绍一下: <table> <caption>HRadio 属性</caption> <thead> <th>属性</th> <th>说明</th> <th>类型</th> <th>默认值</th> </thead> <tbody> <tr> <td>value</td> <td>此值即是选中的值,用 v-model 直接绑定即可</td> <td>String | Number | Array</td> <td>-</td> </tr> <tr> <td>direction</td> <td>决定组件的排列方向,只有两个可选的值, column 或者 row</td> <td>String</td> <td>column</td> </tr> <tr> <td>right</td> <td>决定单选按钮的位置,靠左放置或者靠右放置</td> <td>Boolean</td> <td>false</td> </tr> <tr> <td>size</td> <td>决定单选按钮的大小,此项设置后,选中时的对勾图标大小也会随之变化</td> <td>String | Number</td> <td>24</td> </tr> <tr> <td>color</td> <td>单选按钮整体的颜色,其实也就是边框+图标的颜色</td> <td>String</td> <td>#2c3e50</td> </tr> <tr> <td>border</td> <td>决定单选按钮是否有圆形边框,如果去除则选中时只有一个对勾图标</td> <td>Boolean</td> <td>false</td> </tr> <tr> <td>hrcolor</td> <td>实际上此组件是一个单选按钮组,此属性的作用就是每个单选按钮框之间的分割线的颜色,如果不想要该分割线,直接指定为 transparent 即可</td> <td>String</td> <td>#ccc</td> </tr> <tr> <td>items</td> <td>指定每一个单选按钮所需要的数据,最基本的就是 title 和 value 两个属性, 具体属性下面会列一个表来解释。</td> <td>Array</td> <td>[]</td> </tr> </tbody> </table> <table> <caption>item 的属性</caption> <thead> <th>属性</th> <th>说明</th> <th>类型</th> <th>默认值</th> </thead> <tbody> <tr> <td>title</td> <td>说明性文字,可以设置也可以不设置</td> <td>String</td> <td>-</td> </tr> <tr> <td>value</td> <td>当前按钮所代表的值</td> <td>String</td> <td>-</td> </tr> <tr> <td>icon</td> <td>当前按钮是否需要额外的图标,如需要,则指定其 type,如不需要,则不设置</td> <td>String</td> <td>-</td> </tr> <tr> <td>iconsize</td> <td>图标的大小</td> <td>String</td> <td>-</td> </tr> <tr> <td>iconcolor</td> <td>图标的颜色</td> <td>String</td> <td>-</td> </tr> </tbody> </table> 示例代码: <template> <div class="app-container"> <div class="container"> <HRadio v-model="checked1" :items="items1" :right="right1" :border="border" :direction="direction"></HRadio> </div> <div class="container"> <HRadio v-model="checked2" :items="items2" :right="right" :border="border" :direction="direction"></HRadio> </div> </div> </template> <script> import { HRadio } from 'vuecomponent' export default { components: { HRadio }, data () { return { checked1: 'i1', checked2: 't2', border: true, items1: [ { value: 'i1', title: '吃饭' }, { value: 'i2', title: '睡觉' }, { value: 'i3', title: '打豆豆' } ], items2: [ { value: 't1', title: 'Google Chrome', icon: 'chrome', iconsize: 28, iconcolor: '#46466E' }, { value: 't2', title: 'Safari', icon: 'safari', iconsize: 28, iconcolor: '#46466E' }, { value: 't3', title: 'Firefox', icon: 'firefox', iconsize: 28, iconcolor: '#46466E' } ], right: true, right1: false, direction: 'column' } } } </script> <style scoped> .container { width: 480px; border: 1px solid #ccc; margin-bottom: 16px; border-bottom-style: none; } .app-container { display: flex; flex-flow: row wrap; justify-content: space-around; } </style> 效果示例图: ![](http://ojihaa8pb.bkt.clouddn.com/h-radio-basic.jpg)