使用Vue制作切口盒子组件
特别声明:如果您喜欢小站的内容,可以点击申请会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!或添加QQ:874472854(^_^)
今天看到@Chris Coyier刚发的一篇帖子,使用CSS怎么写一个切口盒子(Notched Boxes)?其实这个效果早在@Lea Verou的CSS Secrets一书中有一个专门的小节介绍CSS怎么实现这个斜切口的效果。所以说这不是什么新东西。不过接下来的内容和前面还是略有不同。
使用到的技术
@Lea Verou曾经介绍了几种实现盒子斜切口的效果,比如说使用CSS的linear-gradient
、clip-path
等。那么接下来的的内容其实除了运用到了clip-path
之外,还使用了CSS的自定义属性以及CSS的calc()
函数。从单个技术点上而言,或许大家都清楚他们的特性,或者很多同学都能灵活的使用这些CSS特性。那么今天重新花一篇篇幅来介绍,主要是因为:
将
clip-path
、calc()
和CSS自定义变量结合一起来使用,制作切口盒子会变得很容易,也很灵活。
实现过程
还是看看为什么结合他们,会让我们事情变得更轻松。
首先来看clip-path
。对于了解过clip-path
的同学来说,这个不是很难的事情,在clip-path
中提供了一个polygon()
函数,在这个函数中我们可以传很多个点的坐标(通过每个点的x
和y
来确定点在Web坐标系统中的位置),这样一来,我们就可以借助polygon()
绘制出任意你想要的多边形。比如下面的代码,绘制了一个三角形:
.module {
clip-path:
polygon(
50% 0,
100% 100%,
0 100%
);
}
效果如下:
随着点的位置增加,你就可以得到一个带斜切角的盒子:
.module {
clip-path:
polygon(
0% 5%, /* 左上1 */
5% 0%, /* 左上2 */
95% 0%, /* 右上1 */
100% 5%, /* 右上2 */
100% 95%, /* 右下1 */
95% 100%, /* 右下2 */
5% 100%, /* 左下1 */
0 95% /* 左下2 */
);
}
效果如下: