先上图
一、支持IE的方法
由于IE浏览器不支持CSS appearance ,所以为了支持IE只能将实际的input隐藏,使用div来显示外观,然后保证div外观和input的状态保持一致即可。为此我将代码封装成了jquery插件,并为其加入全选按钮的功能,欢迎下载使用,下载链接在本文最后。
实测插件支持chrome 、Firefox和IE7+。由于本人IE浏览器没有IE6模式,所以没有测试IE6,实际IE6应该也能支持。
二、无需支持IE的方法
无需支持IE浏览器的话,方法就轻量多了。使用CSS appearance属性清除input原来的样式,就可以肆意添加你所希望的样式了,然后使用:active来添加input按下时的样式,使用:checked来添加input选中后的样式,代码示例如下:
input[type="checkbox"]{ -webkit-appearance: none; -moz-appearance: none; appearance: none; outline: none; display: inline-block; vertical-align: middle; width: 36px; height: 36px; border-radius: 18px; background-image: url(images/icon-checked.png); background-size: 100% auto; box-sizing:border-box; background-position: 0 0; background-color: white; border:solid 4px #bbb; } /*复选框鼠标按下时增加的样式*/ input[type="checkbox"]:active{ background-color: rgb(100,100,100); } /*复选框选中后增加的样式*/ input[type="checkbox"]:checked{ background-position: 0 -36px; background-color: #e1a656; border: 0; } /*复选框选中后增加的样式*/ input[type="checkbox"]:checked:active{ background-color: rgb(100,100,100); }您也可以将插件包下载下来,在里面的demo2.html可以看到完整的代码案例,案例中也加入了全选按钮的功能。
这里有一个问题,就是Firefox虽然支持CSS appearance
属性,但是复选框和单选按钮添加 -moz-appearance: none并不能将原有样式清除,所以此方法实际是不能支持IE和Firefox的。但是应用在移动端,该方法还是很nice的!