核心提示:1.为什么要自定义复选框?因为原生复选框的默认样式比较少,不太美观,而且当我们为其修改样式时,会发现,除了可以设置宽度和高度等少数样式外,其余样式都没有效果。这时,我们需要自己来设计一个漂亮的复选框。...
1.为什么要自定义复选框?
因为原生复选框的默认样式比较少,不太美观,而且当我们为其修改样式时,会发现,除了可以设置宽度和高度等少数样式外,其余样式都没有效果。这时,我们需要自己来设计一个漂亮的复选框。
2.如何自定义复选框?
解决方法很简单。主要分为两步。第一步是,添加label元素让其与复选框产生关联。第二步是通过给label元素设置::before伪元素,让其与原生复选框之间生成一个自定义的复选框,然后通过:checked, :focus, :disabled等伪类选择器为自定义复选框丰富样式。
具体实现代码如下:
HTML:
CSS:
//添加自定义复选框
input[type="checkbox"] + label::before{
content:"\00a0";//Unicode字符集,生成“空格”
display:inline-block;
width:12px;
height:12px;
line-height:12px;
border-radius:3px;
margin:3px;
background-color:yellowgreen;
}
//添加选中样式
input[type="checkbox"]:checked+label::before{
content:"\2713";//Unicode字符集,生成“勾选符号”
color:red;
}
//添加聚焦样式
input[type="checkbox"]:focus + label::before{
box-shadow: 0 0 2px 2px #58a;
}
//隐藏原生复选框
#running{
position:absolute;
clip:rect(0,0,0,0);
//也可以使用display:none等方法隐藏复选框,不过那样就无法用Tab键使复选框聚焦
}
效果如下:

附:
Unicode字符集:https://unicode-table.com/cn/#control-character
在线代码演示:https://jsfiddle.net/Anthony_chao/vokuw76p/4/


