前言
今天给大家分享一种为复选框添加样式的方式,由于只为提供一种思路,对于不同背景图示例代码在各个浏览器之间运行起来样式会存在一些偏差,这里不作考虑,但是这种方式是兼容所有浏览器的,废话少说,上代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!--这是一个reset的样式-->
<link rel="stylesheet" href="./normalize.min.css">
<style>
#checkbox{
width:100%;height:100%;
opacity:0;/*关键:透明度设为零*/
filter:alpha(opacity=0);
-moz-opacity:0;
-webkit-opacity:0;
}
#checkIcon{
width:16px;height:16px;
display:inline-block;
vertical-align:middle;
background-image:url(./big.png);
background-repeat:no-repeat;
}
label{
font-size:14px;
}
.uncheck{
background-position:-138px 0;
}
.check{
background-position:-167px 0;
}
</style>
</head>
<body>
<span id="checkIcon" class="uncheck"><input type="checkbox" id="checkbox"></span><label for="checkbox">自定义复选框样式</label>
<script>
var checkIcon = document.getElementById('checkIcon');
var checkbox = document.getElementById('checkbox');
checkIcon.onclick = function() {
checkbox.checked ? checkIcon.className = 'check' : checkIcon.className = 'uncheck';
}
</script>
</body>
</html>
代码中利用一个span作为背景来显示复选框的新样式,通过改变span的class属性来改变复选框的状态,用一个label标签与复选框关联,好让点击文字时依然能改变复选框的状态,需要的注意的是,这里的复选框的样式要设为opacity:0,而不是visibility:hidden,更不是display:hidden,不然复选框本身将无法点击改变状态,出现一些麻烦。