在一般 web 开发中,常用的思路有两种(纯CSS):
1. 隐藏原生 radio,使用 :checked 选择器和 + 兄弟选择器,给兄弟元素 label 添加伪元素样式(::before / ::after)
2. 还是隐藏原生 radio,使用 :checked 选择器和 + 兄弟选择器,不过是给 label 加一个背景图片(雪碧图),控制 background-position 来实现
传送门:
但是,微信小程序并不支持 + 兄弟选择器,CSS 道路不通。
加上不能操作 DOM 元素,也不能通过 JavaScript 在 change 的回调函数中更改对应 label 的样式。
所以只好通过小程序的框架实现 事件响应--> 数据修改--> 动态渲染 来模拟一个 radio-group。
传送门: