复选框:

闲话少说,这里直接介绍如何修改小程序提供的复选框的样式,如原生的是这样的:

需要的是这样的:

示例代码:

/*复选框外框样式*/
checkbox .wx-checkbox-input {
width: 40rpx;
height: 40rpx;
border: 4rpx solid #999;
border-radius: 100%;
}
/*复选框外框选中样式*/
checkbox .wx-checkbox-input.wx-checkbox-input-checked {
border-color: #3cbcee;
}
/*复选框选中后内部样式*/
checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
width: 60%;
height: 60%;
background: #3cbcee;
border-radius: 100%;
content: '';
transform: translate(-50%, -50%) scale(1);
-webkit-transform: translate(-50%, -50%) scale(1);
}

注:复选框选中后内部样式部分,最后两行样式一定要有,不然复选框选中后内部的圆点会不居中(而且不太好调),具体的就不细说了,有兴趣的可以试试:

  transform: translate(-50%, -50%) scale(1);
-webkit-transform: translate(-50%, -50%) scale(1);

如上,还是跟我们修改html原生标签样式是一样的,只不过我们不了解小程序这些原生组件的内部结构罢了。

单选按钮:

仍旧按上面的样式修改,代码如下:

/* 单选按钮样式*/

radio .wx-radio-input {
width: 40rpx;
height: 40rpx;
border: 4rpx solid #999;
border-radius: 100%;
background: none;
} /*单选按钮选中后内部样式*/ radio .wx-radio-input.wx-radio-input-checked {
border: 4rpx solid #3cbcee!important;
} radio .wx-radio-input.wx-radio-input-checked::before {
width: 60%;
height: 60%;
background: #3cbcee;
border-radius: 100%;
content: '';
transform: translate(-50%, -50%) scale(1);
-webkit-transform: translate(-50%, -50%) scale(1);
}

如上,样式代码跟复选框的基本一致,直接将checkbox换为radio就可以了。但是有一个地方不一样,就是单选按钮选择后的外框样式需要添加 !Important ,不然不会生效的。

如果需要添加禁用标志,也是可以自定义的:

radio.disabled .wx-radio-input {
width: 40rpx;
height: 40rpx;
border: 4rpx solid #eee;
border-radius: 100%;
background: none;
}

总结:

虽然官方没有提供原生组件样式修改的入口,但是微信小程序基于微信内置浏览器的X5内核(其实就是Chrome内核),小程序在某些方面和html是很类似的。从上边的例子也可以看出,小程序原生checkbox组件内部是封装了一些我们看不到的东西的,只要我们了解了原生组件内部构造,就可以直接修改组件样式。

目前还没找到有关小程序组件内部类名的相关文档,但感觉可以从小程序编译包中应该有迹可循的,感兴趣的可以去了解下:https://www.cnblogs.com/xyyt/p/9523902.html

后记:

对于复选框、单选按钮这些组件,在编码实现的时候,会涉及到组件的选中、非选中、禁用状态,非禁用状态可能会有默认选择第一个选项,一般情况下的编码如下:

<radio wx:if="{{item.isSelect==0}}" class='vc {{cardDetail.status!=1||cardDetail.payStatus==0?"disabled":""}}'
color="white" disabled='{{cardDetail.status!=1||cardDetail.payStatus==0}}' value="{{index}}" checked='{{index==fatherRightsCheckIndex}}' />

如上,所有的状态、属性都在一个组件中实现,可以发现判断条件会比较多,如果后续有改动,那么改动的地方就比较多了。我们可以对这段代码进行优化如下:

<block wx:if="{{item.isSelect==0}}">
<radio wx:if="{{cardDetail.status!=1||cardDetail.payStatus==0}}" class='vc disabled' disabled='true' />
<radio wx:else class='vc' color="white" value="{{index}}" checked='{{index==fatherRightsCheckIndex}}' />
</block>

如上,代码并没有增加多少,但是代码结构清晰多了,即使后续有改动,改动起来也很方便的。

微信小程序开发——修改小程序原生checkbox、radio默认样式的更多相关文章

  1. 修改 input[type="radio"] 和 input[type="checkbox"] 的默认样式

    表单中,经常会使用到单选按钮和复选框,但是,input[type="radio"] 和 input[type="checkbox"] 的默认样式在不同的浏览器或 ...

  2. 微信小程序开发 [01] 小程序基本结构和官方IDE简介

    1.小程序账户注册 实际上在进行开发时没有注册小程序账户也是可以的,官方提供的IDE提供实时编译模拟预览,和当前你有没有绑定小程序账户没有关系. 当然,最终你要正式上线你的小程序的话,肯定还是需要账户 ...

  3. 微信公众平台开发(84) 小i机器人

    很多朋友询问如何开发小黄鸡之类的智能聊天机器人,但遗憾的是小黄鸡接口申请页面在最近几个月里都无法访问,且使用时限制太大,我们找了另一个接口:小i机器人.本文介绍如何在微信公众平台中使用小i接口开发智能 ...

  4. 微信小程序修改radio和checkbox的默认样式和图标

    wxml: <view class="body"> <view class="body-content"> 第1题:企业的价值观是 ? ...

  5. CSS3过渡结束监听事件,清除/修改表单元素的一些默认样式

    document.querySelector('div').addEventListener('transitionEnd',function(){ console.log('过度结束') }) 如果 ...

  6. 微信小程序开发——获取小程序带参二维码全流程

    前言: 想要获取微信小程序带参数二维码,如这种: 官方文档只说了获取小程序码和二维码的三种接口及调用(参考链接:https://developers.weixin.qq.com/miniprogram ...

  7. 小程序 之修改radio默认样式

    一.效果图 二.代码 /* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */ radio .wx-radio-input.wx-radio-input-checked { bor ...

  8. WPF程序开发方法小总结

    1.先做静态界面(静态界面带有 示例 数据---> 展示布局效果) 2.然后在VM写完之后,再对静态界面绑定数据源属性

  9. php微信公众号开发入门小教程

    1.配置相关服务器 (1) 如下,把自己的服务器ip白名单配置上: (2) 开始配置令牌,配置令牌时先需要把现成的代码放到自己的服务器上面,代码里面包含自己的设置的令牌号码,这样才可以配置成功. 注意 ...

随机推荐

  1. NT Kernel & System (ntoskrnl)占用80端口

    释放80端口 netstat -ano|findstr "80" 查询占用的进程 , PID =4 发现是system进程 无法直接kill. 1. 关闭iis的默认网站的80端口 ...

  2. 【转】golang-defer坑的本质

    本文节选自https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.html 作者的分析非常透彻,从问题本质分析,就不会对defer产生 ...

  3. 如何在Jenkins中使用日期参数(变量)

    一.首先需要安装插件:Date Parameter Plugin 二.安装完成后,在项目中添加参数,我这里只有日期,时间的话没试过,应该也可以把 三.用${date}调用参数即可 最后邮件的附件正常~

  4. [Reprint] Difference Between Job, Work, And Career

    https://www.espressoenglish.net/difference-between-job-work-and-career/ A lot of English learners co ...

  5. Jenkins持续集成邮件发送

    jenkins下载:https://jenkins.io/downloadgeneric java package(war) 1.tomcat部署: 0.jdk环境 1.修改conf目录下的serve ...

  6. js插件---videojs中文文档详解

    js插件---videojs中文文档详解 一.总结 一句话总结: js插件网上都有很多参考资料,使用起来也非常简单 二.lavarel中使用实例 <video id="example_ ...

  7. jenkins生成的HTML报告中expand与collapse问题

    1.打开jenkins中脚本命令执行页面 2.在脚本命令页面的,输入框中粘贴 System.setProperty("hudson.model.DirectoryBrowserSupport ...

  8. Spring源码窥探之:AOP注解

    AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...

  9. LeetCode 841. Keys and Rooms

    原题链接在这里:https://leetcode.com/problems/keys-and-rooms/ 题目: There are N rooms and you start in room 0. ...

  10. rhcsa备战笔记

    笔记全部手打 转载请加原文链接 0)重置密码开机按e 找到linux16行 rd.break console=tty0  ctrl+xmount -o remount,rw /sysrootchroo ...