最下面那个是之前写的  今天在做项目的时候发现,之前写的貌似还是有点多,起码增加的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. Navicat 闲置时间过长会卡死

    前段时间使用navicat连接线上的数据库,Navicat 闲置时间过长会卡死.解决方案:选中数据库,右键点击 编辑连接,修改保持连接间隔为 20秒.非常 so easy ! 1. 选中数据库,右键点 ...

  2. Kafka入门(4):深入消费者

    摘要 在这一篇文章中,我将向你介绍消费者的一些参数. 这些参数影响了每次poll()请求的数据量,以及等待时间. 在这之后,我将向你介绍Kafka用来保证消费者扩展性以及可用性的设计--消费者组. 在 ...

  3. React 和 VUE 的区别和优缺点

    前言 React 是由Facebook创建的JavaScript UI框架,React推广了 Virtual DOM( 虚拟 DOM )并创造了 JSX 语法.JSX 语法的出现允许我们在 javas ...

  4. oracle之字符集

    全球化特性与字符集 数据库的全球化特性是数据库发展的必然结果,位于不同地区.不同国家.不用语言而使用同一数据库越来越普遍.Oracle数据库提供了对全球化数据库的支持,消除不同文字.语言环境.历法货币 ...

  5. windows操作系统的电脑越用越卡?简说几种原因和解决方法。

    很多人在使用windows操作系统的发现电脑越用越卡,但是不知道什么原因,只知道电脑越便宜的越卡(电脑配置低), 然而导致电脑卡顿缓慢的原因有很多,总结出来就是软件和硬件的问题,那怎么办呢? 电脑系统 ...

  6. sql中的join

    首先准备数据 有以下数据,三张表:role(角色表).hero(英雄表).skill(技能表),我们以英雄联盟的数据做示例 一个hero对应一个role(我们这里暂定) 一个role可以对应多个her ...

  7. 福利来了~Linux一键部署包,环境安装不用愁!!!

    前言 昨天一哥们的弟弟突然问我有没有部署过的Linux,公司连个运维都没有,服务器都要后端部署.... 你有没有相似的遭遇呢?公司规模小,后端即是运维,一份工资干两份活,哈哈~ 为了解决这老弟的困惑, ...

  8. 第3章 02 python字符串类型及操作

    字符串切片 取字符串从结尾到开头,相当于字符串逆序 转义符 转义符表达特定字符的本意 转义符    \“      ---->    ” 字符串操作符 例子: 获取星期字符串 定义星期 获取用户 ...

  9. archaius(4) 属性对象

    讲完上一节,我们就可以使用合理的配置管理器或者实现自己的配置管理来管理我们的配置项了.archaius还提供了一种新的配置使用的方式. 动态属性对象 动态属性对象针对每个配置项以对象方式进行操作,并且 ...

  10. 【读书】Into The Air:进入空气稀薄地带

    珠穆朗玛峰,世界第一高峰,北部在中国境内,南部在尼泊尔境内.喜欢户外运动的人,曾经在20多岁的时候曾经"大言不惭"说这一辈子一定要去一次珠峰.<Into the Air> ...