思路:借助于组合选择符和before伪元素,利用content属性改变伪元素的内容,为其添加我们想要的样式。并将原来的复选框隐藏掉。
HTML结构如下:
<input type="checkbox" id="awesome"> |
首先,生成一个伪元素,先给这个伪元素添加一些样式。
input[type="checkbox"] + label::before{ |
然后给伪元素添加勾选状态下的样式
input[type="checkbox"]:checked + label::before{ |
这时,这个伪元素已经是经过简单美化后的复选框了。然后,我们需要将原来的复选框以一种不损失访问性的方式隐藏起来。因此,不能使用display:none,那样会完全删除这个dom元素。用另一种办法:
input[type="checkbox"]{ |
这时候,我们自定义的复选框就已经完成了。
最后,可以给这个复选框再加上聚焦和禁用状态下的样式。
input[type="checkbox"]:focus + label::before{ |
参考:《CSS揭秘》