个性化单选和复选组件在网页设计中非常常见,它们不仅能够提升用户界面的美观度,还能改善用户体验。此组件是使用vue uniapp实现的个性化单选复选组件。设计完成后,点击生成源码即可。
拖动组件过设计区
每行显示数量
默认支持每行三个,可以上面选择属性每行显示个数。
选择图标在右
某些场景下,为了更好的效果,选择图标希望在右边显示,设计器同样考虑到了,只需要开启图标在右属性。
标题换行
标题换行是指标题跟选择项不在同一行.
个性化选择图标
默认单选比较单调,可视化支持自定义默认图片及选中后图片。
个性化单选内容
首先要设计一个显示的FLEX组件效果,然后把设计好的FLEX组件往单选节点里拖动即可。
保存源码至本地
再次点击保存源码至本地,本地个性化单选复选按钮就变成了不同效果。
回调事件
用户选择单选复选后希望触发后面的事件逻辑处理,可视化工具提供了回调事件,配置自己回调事件即可处理接下来你想要的操作。
生成源码
点击查看源码或者保存源码至本地,都可以快速看见设计的源码 。
<template> <view class="container container21094"> <u-form-item class="diygw-col-24" label="单选" labelPosition="top" prop="radio"> <u-radio-group class="flex flex-wrap diygw-col-24 justify-between" wrapClass=" justify-between" v-model="radio" :iconSize="20"> <u-radio activeImg="/static/lw.png" img="/static/lw-1.png" class="diygw-col-24" shape="circle" v-for="(radioitem, radioindex) in radioDatas" :key="radioindex" :name="radioitem.value"> <view class="flex text-left flex-content diygw-col-24"> <view class="flex diygw-col-24 flex-direction-column items-start flex-wrap flex7-clz"> <view class="flex diygw-col-24 items-center flex-nowrap"> <view class="flex flex-wrap diygw-col-0 flex-direction-column flex15-clz"> <text class="diygw-col-0 text3-clz"> {{ radioitem.label }} </text> <text class="diygw-col-0 text16-clz"> 添加客户信息 </text> </view> <image src="/static/icon1_kf.png" class="image2-size diygw-image diygw-col-0 image2-clz" mode="widthFix"></image> </view> </view> </view> </u-radio> </u-radio-group> </u-form-item> <u-form-item class="diygw-col-24 radio1-clz" labelPosition="top" prop="radio1"> <u-radio-group iconPlacement="right" class="flex flex-wrap diygw-col-24 justify-between" wrapClass=" justify-between" v-model="radio1" :iconSize="16"> <u-radio activeImg="/static/g.png" img="/static/g1.png" class="diygw-col-24" shape="circle" v-for="(radio1item, radio1index) in radio1Datas" :key="radio1index" :name="radio1item.value"> {{ radio1item.label }} </u-radio> </u-radio-group> </u-form-item> <u-form-item class="diygw-col-24" label="单选" labelPosition="top" prop="radio2"> <u-radio-group iconPlacement="right" class="flex flex-wrap diygw-col-24 justify-between" wrapClass=" justify-between" v-model="radio2"> <u-radio class="diygw-col-24" shape="circle" v-for="(radio2item, radio2index) in radio2Datas" :key="radio2index" :name="radio2item.value"> {{ radio2item.label }} </u-radio> </u-radio-group> </u-form-item> <view class="flex flex-wrap diygw-col-24 flex13-clz"> </view> <view class="clearfix"></view> </view> </template> <script> export default { data() { return { //用户全局信息 userInfo: {}, //页面传参 globalOption: {}, //自定义全局变量 globalData: {}, radioDatas: [ { value: '1', label: '综合排序', checked: true }, { value: '2', label: '总价从低至高', checked: false }, { value: '3', label: '总价从高至低', checked: false }, { value: '4', label: '单价从低至高', checked: false }, { value: '5', label: '单价从高至低', checked: false } ], radio: '1', radio1Datas: [ { value: '1', label: '综合排序', checked: true }, { value: '2', label: '总价从低至高', checked: false }, { value: '3', label: '总价从高至低', checked: false }, { value: '4', label: '单价从低至高', checked: false }, { value: '5', label: '单价从高至低', checked: false } ], radio1: '1', radio2Datas: [ { value: '1', label: '选项一', checked: true }, { value: '2', label: '选项二', checked: false }, { value: '3', label: '选项三', checked: false } ], radio2: '1' }; }, onShow() { this.setCurrentPage(this); }, onLoad(option) { this.setCurrentPage(this); if (option) { this.setData({ globalOption: this.getOption(option) }); } this.init(); }, methods: { async init() {} } }; </script> <style lang="scss" scoped> .flex7-clz { padding-top: 20rpx; border-bottom-left-radius: 12rpx; padding-left: 20rpx; padding-bottom: 20rpx; border-top-right-radius: 12rpx; margin-right: 10rpx; background-color: #f7faff; margin-left: 10rpx; flex-shrink: 0; overflow: hidden; width: calc(100% - 10rpx - 10rpx) !important; border-top-left-radius: 12rpx; margin-top: 10rpx; border-bottom-right-radius: 12rpx; margin-bottom: 10rpx; padding-right: 20rpx; } .flex15-clz { flex: 1; } .text3-clz { flex: 1; font-size: 30rpx !important; } .text16-clz { color: #a9a9a9; } .image2-clz { border: 2rpx solid #fbfbfb; border-bottom-left-radius: 120rpx; overflow: hidden; border-top-left-radius: 120rpx; border-top-right-radius: 120rpx; border-bottom-right-radius: 120rpx; } .image2-size { height: 80rpx !important; width: 80rpx !important; } .radio1-clz { font-weight: bold; font-size: 28rpx !important; } .flex13-clz { padding-top: 10rpx; padding-left: 10rpx; padding-bottom: 10rpx; padding-right: 10rpx; } .container21094 { } </style>