原理:直接覆盖微信小程序定义的 单选/复选按钮样式,从根本上实现样式自定义;本文采用的方法不需要隐藏原来的按钮,也不需要在按钮上附加样式表。
场景:商城购物车 复选框
效果:仿天猫购物车的UI
使用:如果单独页面单独样式,就写到对应page的wxss里,如果整个小程序都用此样式,就写到app.wxss里
复选按钮(checkbox)修改及使用如下
.wxml:
checkbox-group bindchange="checkboxChange" label wx:for="{{cartArr}}" checkbox value="{{index}}"/checkbox view{{item.name}}/view !-- 其他布局代码 -- /label /checkbox-group.wxss:
/* 重写 checkbox 样式 *//* 未选中的 背景样式 */checkbox .wx-checkbox-input{ border-radius: 50%;/* 圆角 */ width: 40rpx; /* 背景的宽 */ height: 40rpx; /* 背景的高 */}/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */checkbox .wx-checkbox-input.wx-checkbox-input-checked{ border: none; background: red;}/* 选中后的 对勾样式 (白色对勾 可根据UI需求自己修改) */checkbox .wx-checkbox-input.wx-checkbox-input-checked::before{ border-radius: 50%;/* 圆角 */ width: 40rpx;/* 选中后对勾大小,不要超过背景的尺寸 */ height: 40rpx;/* 选中后对勾大小,不要超过背景的尺寸 */ line-height: 40rpx; text-align: center; font-size:30rpx; /* 对勾大小 30rpx */ color:#fff; /* 对勾颜色 白色 */ background: transparent; transform:translate(-50%, -50%) scale(1); -webkit-transform:translate(-50%, -50%) scale(1);}js就不写了,都是自定义事件,跟样式无关。
同理:单选按钮(radio)是同样的修改方法,只需要把wxml文件及wxss文件中 对应的 checkbox 替换成 radio即可
.wxml:
!-- radiogroup 布局 --radio-group bindchange="radioChange" label wx:for="{{cartArr}}" radio value="{{index}}"/radio view{{item.name}}/view !-- 其他布局代码 -- /label /radio-group.wxss:
/* 重写 radio 样式 *//* 未选中的 背景样式 */radio .wx-radio-input{ border-radius: 50%;/* 圆角 */ width: 40rpx; height: 40rpx;}/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */radio .wx-radio-input.wx-radio-input-checked{ border: none; background: red;}/* 选中后的 对勾样式 (白色对勾 可根据UI需求自己修改) */radio .wx-radio-input.wx-radio-input-checked::before{ border-radius: 50%;/* 圆角 */ width: 40rpx; /* 选中后对勾大小,不要超过背景的尺寸 */ height: 40rpx; /* 选中后对勾大小,不要超过背景的尺寸 */ line-height: 40rpx; text-align: center; font-size:30rpx; /* 对勾大小 30rpx */ color:#fff; /* 对勾颜色 白色 */ background: transparent; transform:translate(-50%, -50%) scale(1); -webkit-transform:translate(-50%, -50%) scale(1);}小程序













