uniapp中radio样式改变

 

内容部分

<view>
                <!-- 示例radio -->
                <radio-group @change="radioChange" class="sunui-radio-group">
                    <label v-for="(item,index) in radio" :key="index" class="sunui-radio-label" :class="item.checked ? 'sunui-radio-checkd' : ''">
                        <radio :value="item.price" :checked="item.checked" />
                        <text>{{item.integral}}</text>
                    </label>
                </radio-group>
                <!-- 示例radio1 -->
                <radio-group @change="radioChange1" class="sunui-radio-group">
                    <label v-for="(item,index) in radio1" :key="index" class="sunui-radio-label" :class="item.checked ? 'sunui-radio-checkd' : ''">
                        {{item.checked}}
                        <radio :value="item.value" :checked="item.checked" />
                        <text>{{item.name}}</text>
                    </label>
                </radio-group>
                <!-- 示例checkbox -->
                <view class="sunui-checkbox-group">
                    <checkbox-group @change="checkboxChange" class="sunui-checkbox-group">
                        <label v-for="(item,index) in checkbox" :key="index" :class="item.checked ? 'sunui-checkbox-checkd' : ''" class="sunui-chekcbox-label">
                            <checkbox :value="item.value" :checked="item.checked" />
                            <text>{{item.name}}</text>
                        </label>
                    </checkbox-group>
                </view>

            </view>

样式

<style>
    /*
        这里修改成你需要的样式,譬如边框,背景颜色(Step.1)
    */
    .sunui-radio-label,
    .sunui-chekcbox-label {
        font-size: .7em;
        padding: 10upx 20upx;
        margin: 12upx;
        margin-left: 0;
        text-align: center;
        background-color: #eee;
        border-radius: 5upx;
        border: 1upx solid #FFBF40;
    }

    /*
        这里修改成你需要的样式,譬如激活边框以及背景颜色(Step.2)
     */
    .sunui-radio-checkd,
    .sunui-checkbox-checkd {
        color: #fff;
        background-color: #FFBF40;
    }

    .sunui-radio-group,
    .sunui-checkbox-group {
        display: flex;
        flex-wrap: wrap;
    }

    .sunui-radio-group radio,
    .sunui-checkbox-group checkbox {
        display: none;
    }
</style>

### 如何自定义 UniApp Radio 组件样式UniApp 中,`<radio>` 和 `<radio-group>` 是用于创建单项选择器的重要组件。为了满足不同的设计需求,开发者可以通过多种方式来自定义 `radio` 的外观。 #### 使用 CSS 自定义样式 最直接的方法是利用全局或局部的 CSS 样式来调整 `radio` 组件的表现形式: ```css /* 修改默认圆点颜色 */ .radio-custom .uni-radio-input-checked { background-color: #ff0000 !important; } /* 改变未选中状态下的背景色 */ .radio-custom .uni-radio-input { border-color: #ccc; } ``` 上述代码片段展示了如何改变已选中的圆形按钮的颜色为红色,并设置了未被点击时边框的颜色[^1]。 #### 利用插槽机制扩展 UI 表现力 对于更复杂的定制化场景,可以借助于 Vue.js 提供的 slot 插槽特性,在不破坏原有逻辑结构的基础上增强视觉效果: ```html <!-- H5 页面 --> <template> <view class="container"> <!-- 单独设置每个选项前缀图标 --> <label v-for="(item, index) in items" :key="index" class="custom-label"> <radio value="{{ item.value }}" color="#FFCC33">{{ item.label }}</radio> <image src="/static/images/icon.png"></image> <!-- 可替换为其他图片资源路径 --> </label> </view> </template> <script> export default { data() { return { items: [ { label: 'Option A', value: 'A' }, { label: 'Option B', value: 'B' } ] }; } }; </script> <style scoped lang="scss"> .custom-label { display: flex; align-items: center; image { margin-left: 8px; width: 24rpx; height: 24rpx; } /* 更改文字大小 */ font-size: 32rpx; } </style> ``` 这段模板不仅改变了单个 radio 按钮旁边的文字尺寸,还为其添加了一个额外的小图标的展示[^3]。 #### 结合 JavaScript 动态控制样式 如果需要基于某些条件动态切换样式,则可以在脚本部分编写相应的处理函数,通过绑定类名的方式来实现交互性的变化: ```javascript methods: { toggleClass(itemValue) { this.selectedItem === itemValue ? '' : (this.selectedItem = itemValue); } }, computed: { getCustomClass() { const classes = {}; this.items.forEach((item) => { classes[item.value] = item.value === this.selectedItem ? 'selected-class' : ''; }); return classes; } } ``` 此方法允许根据用户的操作实时更新界面元素的状态,从而提供更加灵活多样的用户体验[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哎呦你好

感谢大佬,你真好!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值