自定义复选框实现——css揭秘读书笔记及实战

自定义复选框

今天来做一个自定义的复选框

效果图

QMV{9@QLMMLR46%{O7JMQN3.png

代码

input[type="checkbox"] + label::before {
    content: '\a0'; /* 不换行空格 */
    display: inline-block;
    vertical-align: .2em;
    width: .8em;
    height: .8em;
    margin-right: .2em;
    border-radius: .2em;
    background: silver;
    text-indent: .15em;
    line-height: .65;
}          
input[type="checkbox"]:checked + label::before {
    content: '\2713';
    background: yellowgreen;
}
input[type="checkbox"] {
  position: absolute;
  clip: rect(0,0,0,0);
}

代码分析

实际上是把原来checkbox的样式隐藏了,然后使用伪类before在label前插入了一个替换的框框(label及其伪类也能触发行为)。
然后当checked后改变了伪类的内容和样式(也可根据需求改成其他的)

隐藏原来复选框的办法。

书上写法

input[type="checkbox"] {
  position: absolute;
  clip: rect(0,0,0,0);
}

首先是绝对定位脱离文档流,然后使用clip(clip 属性剪裁绝对定位元素。)裁剪

不使用display: none和visibility: hidden的原因

display: none的话会损失可访问性,也就是无法通过tab切换焦点。
visibility: hidden不会脱离文档流,只是隐藏显示了而已,所以会缺一块,也不好。

总结

首先学到了一种隐藏元素的新方法,绝对定位clip那个。
然后练习了一下css,貌似没了?

敬请期待(挖坑)

自定义复选框选定的时候有打钩动画,挖坑一波。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 先把css隐藏页面元素有几种方法列出来,方便查看以及使用,下文再分析其中的原理 display : none ; ...
    Amfishers阅读 4,845评论 0 3
  • 复习完CSS后总结一下,首先看一下CSS的一个体系结构图: 大体上分为这八个部分,参考一下vivijind的css...
    苏敏阅读 3,790评论 0 3
  • 英文原文:Five Ways to Hide Elements in CSS作者:Baljeet Rathi译者:...
    IT程序狮阅读 2,890评论 0 1
  • 去仁恒接丽娜,两人去商都。 先吃甜品。 之后两人逛街,有家vintage风的店很不错。 lin果桑和蜜子接我们去拱...
    lisa全职吐槽阅读 2,338评论 0 0