CSS 实现:checkbox

<div class="wrap">
<label>性别:</label>
<div class="cb-wrap"> <!-- 整体为一个checkbox,用div包裹 -->
<input type="radio" name="sex1" value="男"></input> <!-- 需要隐藏,置于最上层 -->
<span class="cb-icon"></span> <!-- 加伪元素,模拟checkbox样式 -->
<span class="cb-label">男</span> <!-- 当选中时,字体颜色也得改变 -->
</div>
<div class="cb-wrap">
<input type="radio" name="sex1" value="女"></input>
<span class="cb-icon"></span>
<span class="cb-label">女</span>
</div>
</div>
css实现:
.wrap {
label {
display: inline-block;
width: 50px;
text-align: right;
margin-right: 15px;
}
}
.cb-wrap {
display: inline-block; // 将div元素设置成行内元素,不然尽管设置的宽度较小,还是会占据一行
width: 50px;
height: 30px;
margin-right: 15px;
line-height: 30px;
position: relative; // 设置定位
input {
opacity: 0; // 设置透明度为0
width: 100%; // 设置宽度为一个checkbox(.cb-wrap)的宽度
height: 100%;
z-index: 2; // 置于最上层
position: absolute; // 相对于.cb-wrap定位
top: 0;
left: 0;
}
// 用伪类:checked,实现checkbox选中状态时改变其它元素样式
input:checked + span { // 用“相邻兄弟选择器”,改变模拟checkbox的颜色
background: red;
}
input:checked ~ .cb-label { // 用“同级元素通用选择器”,改变字体的颜色
color: red;
}
.cb-icon { // 实现模拟checkbox
display: inline-block; // span设宽,必须得设置成块级元素!
width: 16px;
height: 16px;
border: 1px solid #ddd;
border-radius: 8px;
position: relative; // 相对于自身原来的位置定位,使其与字体对齐
top: 3px;
&:after { // 伪元素实现对勾(√)部分
content: "";
display: inline-block;
width: 9px;
height: 6px;
border-left: 1px solid #fff;
border-bottom: 1px solid #fff;
transform: rotate(-45deg);
position: absolute;
top: 3px;
right: 3px;
}
}
}

(示例2相对实例1较为简单,不需要用为元素实现模拟的checkbox,也少了一个span元素,区别在于cb-icon的实现不同)
<div class="wrap">
<label>性别:</label>
<div class="cb-wrap">
<input type="radio" name="sex2" value="男"></input>
<span class="cb-icon">男</span>
</div>
<div class="cb-wrap">
<input type="radio" name="sex2" value="女"></input>
<span class="cb-icon">女</span>
</div>
</div>
css实现:
.cb-wrap {
display: inline-block;
width: 50px;
height: 30px;
margin-right: 15px;
line-height: 30px;
position: relative;
input {
opacity: 0;
width: 100%;
height: 100%;
z-index: 2;
position: absolute;
top: 0;
left: 0;
}
input:checked + span {
background: orange;
color: #fff;
}
.cb-icon {
display: inline-block;
width: 50px;
height: 25px;
border: 1px solid #ddd;
text-align: center;
line-height: 25px;
}
}
CSS 实现:checkbox的更多相关文章
- 用CSS美化checkbox复选按钮和raido单选按钮-适用于移动端
最终效果: 实现方法 index.html: <!DOCTYPE html> <html> <head> <title></title> & ...
- 纯css实现checkbox开关切换按钮
我们都知道 checkbox 标签默认样式 实在是太low了,故对CheckBox美化很有必要. 现提供两种方式对其进行美化. 方法一 <div class="switch-wrap ...
- ZH奶酪:利用CSS将checkbox选项放大
在Hybrid App开发过程中,html中默认的checkbox选项在手机屏幕上显得比较小,app不能像web page那样放大缩小,所以要通过CSS将checkbox选项放大: 例如HTML代码: ...
- css input checkbox和radio样式美化
参考:https://segmentfault.com/a/1190000004553258 http://www.haorooms.com/post/css_mh_ck_radio 思路都一样的,先 ...
- 转 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- 【转】纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- CSS控制checkbox样式
原文地址:http://www.xiumu.org/technology/style-checkboxes-with-css.shtml#comments Checkbox复选框是一个可能每一个网站都 ...
- 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- css 设置 checkbox复选框控件的对勾√样式
效果 最终的样式,想要的效果: 我们要创建方框中的对勾,对于这一点,我们可以使用:after伪类创建一个新的元素,为了实现这个样式,我们可以创建一个5px * 15px的长方形并给他加上边框. ...
- 利用纯CSS美化checkbox和radio和滑动按钮的实现
W3C提供的CheckBox和radio的原始样式非常的丑,而且在不同的额浏览器表现还不一样,使用常规的方法添加样式没法进行修改样式 一, 单选按钮 <html> <head> ...
随机推荐
- [转]何时使用委托而不使用接口(C# 编程指南)
以下内容转自MSDN:http://msdn.microsoft.com/zh-cn/library/ms173173.aspx 委托和接口都允许类设计器分离类型声明和实现. 任何类或结构都能继承和实 ...
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
文章索引和简介 通过上一篇的学习 我们把demo的各种关系终于搭建里起来 以及处理好了如何映射到数据库等问题 但是 只是搭建好了关系 问题还远没有解决 这篇就来写如何查找导航属性 和查找导航属性的几种 ...
- cisco VPN
配置实例:公司在北京而分公司在上海,如果租用光纤业务费用会比较高,另外安全性也没有保证,特别是对内网的访问方面.我们要在总公司和分公司之间建立有效的VPN连接.具体网络拓扑如图1所示.北京路由器名为R ...
- MongoDB replicaSet
MongoDB 的replication机制除了最普通的Master/Slave模式之外,更强大的就是其支持自动故障转移的Replica Sets模式了.相对于其问题多多的auto-sharding机 ...
- jquery 添加方法 : $.fn.方法名 = function(参数a,b,c){
$.fn.image_checked = function(self,status,img_body,csrf_token){ $(this).live('click', fu ...
- POJ 2965 The Pilots Brothers' refrigerator 暴力 难度:1
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16868 ...
- zatree第三方插件
Zabbix安装第三方插件zatree2.4.5 1.下载zatree第三方插件https://github.com/spide4k/zatree.git 2.检查PHP环境需要支持php-xml.p ...
- mysql.default_socket 和 mysqli.default_socket
php.ini 里面mysql.default_socket 和 mysqli.default_socket 设置必须要和mysql里面的值一样,否则连接mysql会提示错误
- soap
sudo apt-get update apt-get install php-soapphp-config --configure-options --enable-soap php -i | gr ...
- Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...