因为题解页的pre code 标签,比较单调,一直有想把这个标签模拟成 macos 的菜单栏的想法。
最早想使用 三个 span 标签或 行内块元素着色来实现,后来在网上看到一种极简的实现思路:
用了伪类和box-shadow来实现
在我的逻辑中每个元素都有::before 和::after 两个伪元素,可以模拟 2 个按钮,但是第三个按钮就要再添加一个实体元素,或是再套一个元素的 before或after 来排成一排。
pre {
border-radius: 20px;
overflow: hidden;
background-color: #ebedf1;
line-height: 1.6;
}
pre::before {
content: "";
display: inline-block;
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #fd6458;
box-shadow: 20px 0 0 #ffbf2b, 40px 0 0 #24cc3d;
margin: 15px 20px 5px;
}
但上面的代码直接使用before 来绘制红色圆点,使用 box-shadow 偏移 可以实现不限数量的圆点,即每一层阴影都缩小成一个小圆点,依次做相对定位。
真的是妙不可言!!!