之前分析了一个原生的checkbox,趁热打铁分析ionic的自带checkbox.

html

<label class="checkbox">
<input type="checkbox">check
</label>

css

- checkbox

.checkbox {
position: relative;
display: inline-block;
padding: 7px 7px;
cursor: pointer; }

定义了一个父节点。
display: inline-block;此元素会被显示为内联元素,元素前后没有换行符。
- checkbox子节点input:before

  .checkbox input:before{
display: table;
width: 100%;
height: 100%;
border-color: #ddd;
border-width: 1px;
border-style: solid;
border-radius: 28px;
background: #fff;
content: ' ';
-webkit-transition: background-color 20ms ease-in-out;
transition: background-color 20ms ease-in-out; }

display:table;让元素的子节点像table元素一样。
使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界、背景等样式,而不会产生因为使用了table那样的制表标签所导致的语义化问题。
width: 100%;height: 100%;高度宽度。

border-color: #ddd;border-width: 1px;border-style: solid;border-radius: 28px;

定义一个圆形的边框,浅灰色。
transition: background-color 20ms ease-in-out;这是一个CSS3过渡效果。即背景颜色有2ms的过度。
综上,input:before只是给了一个边框的效果。
- checkbox子节点input:after

.checkbox input:after{
-webkit-transition: opacity 0.05s ease-in-out;
transition: opacity 0.05s ease-in-out;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
position: absolute;
top: 33%;
left: 25%;
display: table;
width: 14px;
height: 6px;
border: 1px solid #fff;
border-top: 0;
border-right: 0;
content: ' ';
opacity: 0; }

这个就是那个checked后显示的对号
transition: opacity 0.05s ease-in-out;表示一个透明度的渐变。
ease-in-out:
ease 规定慢速开始,然后变快,然后慢速结束的过渡效果;
ease-in 规定以慢速开始的过渡效果;
ease-out 规定以慢速结束的过渡效果;
ease-in-out 规定以慢速开始和结束的过渡效果
transform: rotate(-45deg);旋转45度。
后面的其实就在弄出“对号”

checkbox子元素Input:checked:before

.checkbox input:checked:before {
background: #387ef5;
border-color: #387ef5;
border-width: 2px;
}

当checked时,Input:before的背景颜色和边框颜色都是蓝色。

checkbox子元素Input:checked:after

.checkbox input:checked:after{
opacity: 1;
}

当checked时,input:after透明度为0(显示那个“对号”).

结论

综上所述,
input:before是一个边框效果
input:after是一个“对号”效果
checked时,input:after(对号)显示,input:before(原来的灰色边框)的背景和边框都变为蓝色。

ionic的checkbox分析的更多相关文章

  1. ListView+CheckBox两种解决方式及原因分析

    近期在用ListView+CheckBox搞一个item选中的项目,我将CheckBox的focus设置为false,另我大喜的是,CheckBox居然能够选中(窃喜中),这么简单就搞定了,由于数据量 ...

  2. (转)jquery serialize表单序列化,当radio或checkbox 未选中时,没有序列化到对象中的原因分析和解决方案 - ghostsf

    相信很多人都用过jq的表单序列化serialize()方法,因为这能很方便地帮你把表单里所有的非禁用输入控件序列化为 key/value 对象,不需要你再去一个个地拼接参数了. 这是一个很好用的函数, ...

  3. ionic-CSS:ionic checkbox(复选框)

    ylbtech-ionic-CSS:ionic checkbox(复选框) 1.返回顶部 1. ionic checkbox(复选框) ionic 里面的 Checkbox 和普通的 Checkbox ...

  4. jQuery checkbox选中问题之prop与attr注意点分析

    $(function () {   // 全选   $("#btnCheckAll").bind("click", function () {     $(&q ...

  5. 微信小程序组件解读和分析:八、checkbox复选项

    checkbox复选项组件说明: checkbox是小程序表单组件中的一个组件,作用是在表单中引导用户做出选择. 要使用checkbox组件,还需要在同组中所有的checkbox标签外使用checkb ...

  6. ionic build android 报错分析

  7. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  8. JQuery Sizzle引擎源代码分析

    最近在拜读艾伦在慕课网上写的JQuery课程,感觉在国内对JQuery代码分析透彻的人没几个能比得过艾伦.有没有吹牛?是不是我说大话了? 什么是Sizzle引擎? 我们经常使用JQuery的选择器查询 ...

  9. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

随机推荐

  1. MyBatis动态 order by 排序不生效解决方法

    使用Mybatis在做一个项目时,发现需要动态的去做一个排序功能,于是乎有了下面XXXMapper.xml代码 <if test="order!=null and !order.isE ...

  2. 微服务从代码到k8s部署应有尽有系列(十一、日志收集)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  3. VirtualBox 共享文件夹设置

    1. 安装VirtualBox的增强功能 2. 设置共享文件夹 参考:VirtualBox主机与虚拟机文件夹共享

  4. php 23种设计模型 - 访问者模式

    访问者模式是一种行为型模式,访问者表示一个作用于某对象结构中各元素的操作.它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色. 访问者模式利用了双重分派.先将访问者传 ...

  5. rsyn的使用

    以下是rsync的语法: Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] ...

  6. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  7. Hive框架

    1.什么是Hive? Hive 是基于Hadoop之上的数据仓库.2.什么是数据仓库? 数据仓库其实就是一个数据库 数据仓库是一个面向主题的,集成的,不可更新的,随时间不变化的数据集合,它用于支持 企 ...

  8. 微信Native支付

    微信Native支付对接(扫码) 由于有业务需求对接了微信和paypal支付,这边做个记录 微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index. ...

  9. spring——AOP(静态代理、动态代理、AOP)

    一.代理模式 代理模式的分类: 静态代理 动态代理 从租房子开始讲起:中介与房东有同一的目标在于租房 1.静态代理 静态代理角色分析: 抽象角色:一般使用接口或者抽象类来实现(这里为租房接口) pub ...

  10. SpringBoot在线预览PDF文件(引用pdf.js工具)

    本项目Demo使用了PDF.js插件实现PDF在线阅读功能PDF.js插件下载地址 实测能用! 1.创建SpringBoot项目,目录结构如下: 2.进行项目配置: pom.xml: <proj ...