完全使用css编写复选框

摘要:
在日常的项目中,出现复选框或者单选框,应该都属于常见需求了,最开始阶段,一般只有两种可能性:一、完全使用或者完成复选框和单选框,如此,就必须接受不同的浏览器对input[type=checkbox]或者input[type=radio]的默认定义,基本上没办法对其默认样式进行修改。css3出现以后,在能够兼容css3设备或者浏览器上,就出现了第三种可能性,使用css3编写自定义的单选框或者复选框,而且不涉及任何一段js代码。

在日常的项目中,出现复选框或者单选框,应该都属于常见需求了,最开始阶段,一般只有两种可能性:

一、完全使用 <input type="checkbox" />或者<input type="radio" />完成复选框和单选框,如此,就必须接受不同的浏览器对input[type=checkbox]或者input[type=radio]的默认定义,基本上没办法对其默认样式进行修改。

二、使用js模拟,使用任意的html标签,如span,定义一个默认样式和选中之后的样式,然后点击之后,判断其是选中还是取消选中,在这种情况下,就得对单选和复选写不同的js,虽说这一小段js并不困难,但是在项目中多处使用复选和单选的时候,终归是比较繁琐的。

css3出现以后,在能够兼容css3设备或者浏览器上,就出现了第三种可能性,使用css3编写自定义的单选框或者复选框,而且不涉及任何一段js代码。

完全使用css编写复选框第1张类似于如此,不适用任何js的自定义一个选中状态的复选框,是重构同学心中一直以来的一个梗吧。

<label class="multiple">
    <input type="checkbox"><span></span>
</label>  

html其实很简单,就是在<input type="checkbox" />后面新增一个可以自定义样式的标签span

.multiple input[type=checkbox] {
  visibility: hidden;
  position: absolute;
  z-index: 20;
  left: 0;
}
.multiple input[type=checkbox] + span {
  display: inline-block;
  vertical-align: middle;
   16px;
  height: 16px;
  border: solid 1px #898989;
  background-color: #f8f8f8;
  border-radius: 2px;
  margin-right: 10px;
  position: relative;
}
.multiple  input[type=checkbox]:checked + span:before {
  content: "";
  position: absolute;
  left: -2px; right: -2px;
  top: -2px; bottom: -2px;
  z-index: 3;
  background: url(../images//selected.png) no-repeat center center;
} 

稍微解释几个关键点:

visibility: hidden; 功能类似于display:none;也是对元素进行隐藏,区别于display:none;的地方在于,使用visibility: hidden; 隐藏的元素,是占位的。可以在网上查一下关于隐藏元素的几种方式,应该会有所收获的。不知道为什么,使用这种方式隐藏的input[type=checkbox],在IE8上没办法点击到。

input[type=checkbox] + span +选择符,是css2提供的选择符,表示选择input[type=checkbox]后面的那个span标签。

input[type=checkbox]:checked + span 表示被选中的checkbox后面的span,这就出现了自定义的可能性。 伪类:checked属于css3选择器,所以IE8及以下兼容不了。

免责声明:文章转载自《完全使用css编写复选框》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇科普:PCI-E插槽都有哪些样子?[Google Guava] 8-区间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

自定义浏览器滚动条样式

为了有助于理解IE中滚动条样式的控制,你可以查看如下的图片: 经过不断的测试发现,在Win8 下面,有一部分样式都起着相同的作用。估计是因为在Win8中扁平化的界面设计而重新定议了系统中滚动条!以下是Win 8下面的滚动条样式,并写出了和CSS支持的情况: 以上所写的几个四个CSS属性,足以控制Win 8系统下,IE浏览器的滚动条样式了。但经过测试...

用原生css实现高斯模糊、黑白等滤镜效果

  —引导— 在CSS3中,有一个强大的属性,那就是filter属性,filter顾名思义就是“滤镜”的意思,用filter属性可以让图片无需PS处理就达到一些简单的显示效果。 —定义和使用— filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。 默认值 none 继承 none 动画支持 是 版本...

css中设置span宽度失效的原因和方法

原文参考自:http://wenku.baidu.com/view/3fec69d6240c844769eaee8a.html CSS中如何把中如何把中如何把中如何把Span标签设置为固定宽度标签设置为固定宽度标签设置为固定宽度标签设置为固定宽度 SPAN标签相信对一般的网页设计师来讲是非常熟悉的朋友了,使用相当频繁,但我们往往很少对SPAN设定样式,一般...

VC++ MFC CheckBox

MFC中复选框CheckBox的基类是CButton! 得到复选框状态的函数:CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK_MIXI); int state = pBtn->GetCheck(); 当state == 0时表示该复选框没有被选中; 当state == 1时表示该复选框被选中; 当stat...

CSS中加号、星号及其他符号的作用

很多朋友搞不清楚CSS中有哪些HACK,怎么使用,我翻译+整理了一下贴在这里。这篇文章是关于CSS的hacking技术。不要和微软专有的CSS属性“滤镜”混淆。   在理想世界里,正确的CSS应该在任何支持CSS的浏览器里工作良好。不幸的是,我们并不是生活在理想的世界里,浏览 器们布满了BUG和不一致。创建一个跨浏览器并且显示一致的页面,CSS开发者必须想...

css边框内凹圆角,解决优惠券的边框问题

关于css边框内凹圆角,找了好久才找到的 <html <head> <title>无标题页</title> <style> body{ background:#999 } .raidal1 { height: 100px; 100px; backg...