复选框:

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

需要的是这样的:

示例代码:

/*复选框外框样式*/
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. 无法将“ng”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 通用解决方案

    1.找到你安装的路径 以@angular/cli 为例 (找到 ng.cmd 这个指令的具体位置) 2. 右键 这台电脑 添加路径到 系统变量的 Path中, 如下图 3.关闭所有的 cmd,并重新打 ...

  2. 外部服务发现-ingress

    Ingress`其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx.haproxy 等负载均衡代理服务器,Ing ...

  3. C 是什么样的语言?

    学习交流可加 微信读者交流①群 (添加微信:coderAllen) 程序员技术QQ交流①群:736386324 --- ==C 是什么样的语言?== 这个问题不要急于寻找问题的答案,而是应该先去考虑当 ...

  4. 使用laravel jwt-auth post提交数据一直出现 'error' => 'invalid_credentials'

    注意,laravel 对密码使用Hash加密,检查一下数据库user表中的password有没有Hash加密过 没仔细看文档坑死我了

  5. 在markdown中插入github仓库中的图片

    右击github中的图片,获得链接: https://github.com/nxf75/ML_Library/blob/master/Hadoop/Haddop%E6%A1%86%E6%9E%B6.p ...

  6. Jquery的$(document).click() 在iphone手机上失效的问题

    click事件和 touchstart事件共存 安卓IOS手机都适用 $(document).on("click touchstart", ".demo", f ...

  7. 12.基于vue-router的案例

    案例分析 用到的路由技术要点: 路由的基础用法 嵌套路由 路由重定向 路由传参 编程式导航 根据项目的整体布局划分好组件结构,通过路由导航控制组件的显示 1.抽离并渲染 App根组件 2.将左侧菜 单 ...

  8. Spark Partition

    分区的意义 Spark RDD 是一种分布式的数据集,由于数据量很大,因此它被切分成不同分区并存储在各个Worker节点的内存中.从而当我们对RDD进行操作时,实际上是对每个分区中的数据并行操作.Sp ...

  9. Build Post Office

    Description Given a 2D grid, each cell is either an house 1 or empty 0 (the number zero, one), find ...

  10. 持续集成学习4 jenkins常见功能

    一.节点选择 1.yum安装jdk yum install -y java-1.8.0 java-1.8.0-openjdk-devel 2.节点选择有三种方式 a.通过系统自带功能限制任务只能在这个 ...