CSS绘制三道杠和小圆点
本文依然是对CSS世界中的小技巧的整理。看CSS世界的过程中,确实收获良多,有很多让人眼前一亮的小技巧。本文就将整理纯CSS实现移动导航中经常使用的三道杠,以及双层圆点的效果。无需加载图片实现。
三道杠
border双线边框实现
HTML
HTML部分只有单层
1 | <div class="icon-menu-border"></div> |
CSS
1 | /* border 双线边框实现 */ |
border-style: double
属性是双线边框(至少3px才会生效),双线的宽度以及两条线之间的间距的分配是:双线宽度相等,中间间隔±1px宽度和高度是指定的中间和下面两条线之间的位置,下方是单线边框,上方是双线边框
border颜色默认是当前color的颜色
padding和background-clip共同实现
HTML
HTML部分只有单层
1 | <div class="icon-menu-padding"></div> |
CSS
1 | /* padding和background-clip共同实现 */ |
background-clip
设置元素背景区域,有三个参数border-box
(默认):背景延伸到边框外沿(但是在边框之下)。padding-box
:边框下面没有背景,即背景延伸到内边距外沿。content-box
:背景裁剪到内容区 (content-box) 外沿宽高定在中间位置,上下padding,外层边框,通过
background-clip
属性将背景颜色区域限制在内容区,而padding区没有颜色currentColor
属性表示当前标签所继承的文字颜色,其中有一些妙用,比如说张鑫旭博客里面的背景色镂空效果
:before和:after伪类实现
这个是我在书上看到说可以通过伪类实现三道杠效果,但是并没有给出实例,我就自己想了一下,写了一个,未必是最佳写法。
HTML
HTML部分最外层是用来指定一个选区大小,否则选区只是middle该区域的大小
1 | <div class="icon-menu-demo"> |
CSS
1 | /* :before和:after伪类实现 */ |
middle
位置在最上面,:before
在中间,:after
在最下面,原因是为了便于外层包裹的div确定区域color
和background-color
颜色要相同,将伪类的文字内容隐藏
小圆点
HTML
1 | <div class="icon-dot"></div> |
CSS
1 | .icon-dot { |
- 和上面的padding和background-clip实现三道杠效果原理相同,不再赘述
总结
可以看出来,我自己想出来的伪类实现三道杠和其它两种方法比起来繁琐了许多。总之,看了CSS世界这本书,确实收益颇多,后面也会抽空整理一下书中的其它一些小的技巧,巩固所学。相比于加载图片,这种方法确实优秀了许多。
- 感谢你的欣赏!