最下面那个是之前写的  今天在做项目的时候发现,之前写的貌似还是有点多,起码增加的span标签可以去掉,这样保持和原生相同的结构最好的,仅仅是样式上的变化。今天把项目中的这个给更新上来。下面就直接还是放代码吧,图就不再截取了,因为外观没发生任何变化,仅仅是内在改变了,话说内在的改变,只有你去了解你才知道,人不就是这样吗?

HTML部分:

<input type="checkbox" id="my_checkbox1" class="my_checkbox">
<label for="my_checkbox1" class="checkbox_label">自定义的复选框</label>

下面是CSS样式部分:

/*
*自定义的checkbox
*/ /*设置复选框描述文字为相对定位,因为下面要在此label下面设置两个伪类,基于它进行定位。*/
label.checkbox_label {
position: relative;
display: inline-block;
padding: 2px 9px;
-webkit-user-select: none;
user-select: none; /*禁止选中label中的文字,因为勾选时双击了很容易选中*/
}
/*隐藏原生的input复选框*/
.my_checkbox {
opacity: 0;
}
/*after伪类生成固定大小的选框,边框颜色设置为灰色,定位到隐藏的checkbox位置上*/
label.checkbox_label::after {
content: "";
display: block;
width: 15px;
height: 15px;
border: 1px solid #d9d9d9;
border-radius: 2px;
background-color: #fff;
position: absolute;
top: 4px;
left: -15px;
z-index: 1;
cursor: pointer;
-webkit-transition: all .2s;
transition: all .2s;
}
/*原生checkbox hover时,此时自定义的伪类选框边框颜色变化为蓝色*/
.my_checkbox:hover+label.checkbox_label::after {
border-color: #1890ff;
}
/*原生的checkbox选中后,对应的自定义选框添加边框颜色和背景颜色*/
.my_checkbox:checked+label.checkbox_label::after {
border-color: #1890ff;
background-color: #1890ff;
}
/*生的checkbox选中后,由于自定义的选框背景为纯色,故这里又定义了一个before伪类来模拟勾选的对勾,这里用一个盒子的边框模拟对勾选中符号*/
.my_checkbox:checked+label.checkbox_label::before {
content: "";
display: block;
width: 6px;
height: 10px;
border-bottom: 2px solid #fff;
background-color: #1890ff;
border-right: 2px solid #fff;
transform: rotate(45deg);
position: absolute;
top: 5px;
left: -10px;
z-index: 2;
box-sizing: border-box;
}

思路分析:自定义的复选框通过label下的伪类生成,一个生成复选框的方框,一个生成复选框的勾选符号即可。然后根据原生checkbox的checked值进行切换选中和未选中的样式。

下面的是之前写的,多写了span  。。。。。。

------------------------------------------------长长长长的分割线----------------------------------------------------------继续分割-------------------------------------------------------------该结束了吧-------------------------------------------------------

话不多说,直入主题。众所周知原生的checkbox复选框、radio单选按钮、select选择框,不同浏览器差别较大,最重要的一点是不怎么好看,如果直接拿原生用,可能会影响整体的美观。项目中用的第三方UI这些都已经很完备,但是在小型项目不想采用第三方UI或者使用的是Bootstrap等没有定制的checkbox样式时,就需要自己去做一个对应的复选框了。本次本着让你改动最小的情况下用纯CSS做了一些自定义的,相对美观的input特殊元素,本节为自定义复选框checkbox。如下图:

下面直接放代码:

HTML部分:

<label for="my_checkboc">
<input type="checkbox" id="my_checkboc" class="my_checkbox">
<!--增加的一个自定义复选框元素span只要在其上应用样式-->
<span class="new_checkbox"></span>
复选框1
</label>

注意,这个HTML结构,label标签最外层,里面包含一个原生checkbox和一个需要自定义样式的span,用来定义checkbox样式。

CSS部分:

label {
position: relative;
} label .new_checkbox {
display: block;
width: 14px;
height: 14px;
border: 1px solid #d9d9d9;
border-radius: 2px;
background-color: #fff;
position: absolute;
top: 4px;
left: 2px;
z-index: 1;
cursor: pointer;
-webkit-transition: all .2s;
transition: all .2s;
} label .new_checkbox:hover {
border-color: #1890ff;
} .my_checkbox {
opacity: 0;
} .my_checkbox:checked+span {
border-color: #1890ff;
background-color: #1890ff;
} /*关联checkbox的值*/
.my_checkbox:checked+span::before {
content: "";
display: block;
width: 6px;
height: 10px;
border-bottom: 2px solid #fff;
background-color: #1890ff;
border-right: 2px solid #fff;
transform: rotate(45deg);
position: absolute;
top: 0;
left: 4.5px;
box-sizing: border-box;
}

定义好span的样式,定位到合适的位置,对原来的checkbox设置透明的为0,这样样式部分就可以了。下一步就是把点击选中加进去。由于lable和checbox时绑定的,故点击label区域,即可将改checkbox选中,此时需要对自定义的span添加选中样式即可。用css “+”选择器,如代码中所示,在checkbox选中时,其后一个span元素将会添加:before伪类,显示选中的图标。图中的选中对勾图标为只有有边框和下边框的长方体旋转而成。

如有疑问请留言,这个时暂时这样写,后面会更新,以及相关的纯css打造的radio复选框和js打造的select单选框,供大家参考。

自定义常用input表单元素一:纯css 实现自定义checkbox复选框的更多相关文章

  1. 自定义常用input表单元素三:纯css实现自定义Switch开关按钮

    自定义常用input表单元素的第三篇,自定义一个Switch开关,表面上看是和input没关系,其实这里采用的是checkbox的checked值的切换.同样,采用css伪类和"+" ...

  2. 自定义常用input表单元素二:纯css实现自定义radio单选按钮

    这是接着上一篇纯css自定义复选框checkbox的第二篇,自定义一个radio单选按钮,同样,采用css伪类和"+"css选择器为思路,下面是预览图: 下面直入主题放代码:HTM ...

  3. 纯css美化单选、复选框

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. ZH奶酪:纯CSS自定义Html中Checkbox复选框样式

    原文链接:http://www.lrxin.com/archives-683.html 首先看下效果: 点击演示地址查看实例. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,之后我们会改变 ...

  5. 【转】纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  6. 转 纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  7. 纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  8. 纯css3实现的超炫checkbox复选框和radio单选框

    之前为大家分享了好多css3实现的按钮.今天要为大家分享的是纯css3实现的checkbox复选框和radio单选框,效果超级炫.先让我们看看图吧! 在线预览   源码下载 这个实例完全由css3实现 ...

  9. mui弹出输入法遮住input表单元素

    转自https://www.cnblogs.com/devilyouwei/p/6293190.html mui弹出输入法遮住input表单元素   问题如下:当我用mui开发app时,在mui-sc ...

随机推荐

  1. 提交并发量的方法:Java GC tuning :Garbage collector

    三色算法,高效率垃圾回收,jvm调优 Garbage collector:垃圾回收器 What garbage? 没有任何引用指向它的对象 JVM GC回收算法: 引用计数法(ReferenceCou ...

  2. dom:文档对象模型,提供的api去操作页面上的元素

    dom对象通过html标签转义成了文档操作对象

  3. [程序员代码面试指南]字符串问题-字符串匹配问题(DP)

    问题描述 字符串str,模式串exp. 必须保证str中无'.'和'星号'字符,并且exp中'星号'不出现在首位,且无连续两个'星号'.PS星号是字符只是暂时没找到markdown的星号转义字符. ' ...

  4. HBase表的数据导出和导入

    1. 表数据导出 hbase org.apache.hadoop.hbase.mapreduce.Export test file:///home/hadoop/test (导入到本地) hbase ...

  5. CSS常用布局技巧 实例

    末尾用省略号! white-space: nowrap; overflow: hidden; text-overflow: ellipsis; ######################## 两个i ...

  6. 骚操作:不重启 JVM,如何替换掉已经加载的类?

    Java对象行为 java.lang.instrument.Instrumentation 直接操作字节码 BTrace Arthas 三生万物 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在 ...

  7. 005.操作系统及Linux系统,虚拟机的作用和发展历史

    操作系统及其作用 操作系统发展史 Linux系统 虚拟机 操作系统 操作系统 操作系统的作用 不同领域的主流操作系统 操作系统(Operation System,OS) 操作系统作为接口的示意图 没有 ...

  8. ZooKeeper 【不仅仅是注册中心,你还知道有哪些?】

    什么是 ZooKeeper Apache ZooKeeper 是一个开源的实现高可用的分布式协调服务器.ZooKeeper是一种集中式服务,用于维护配置信息,域名服务,提供分布式同步和集群管理.所有这 ...

  9. linux监控工具audit

    audit是什么? audit是记录linux审计信息的内核模块. 他记录系统中的各种动作和事件,比如系统调用,文件修改,执行的程序,系统登入登出和记录所有系统中所有的事件.audit还可以将审计记录 ...

  10. Python-通过实例方法调用-统一接口的实现-getter methodcaller

    某项目中,我们的代码使用的2个不同库中的图形类: Circle,Triangle 这两个类中都有一个获取面积的方法接口,但是接口的名字不一样 统一这些接口,不关心具体的接口,只要我调用统一的接口,对应 ...