现代 CSS

使用Vue制作切口盒子组件

特别声明:如果您喜欢小站的内容,可以点击申请会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!或添加QQ:874472854(^_^)

今天看到@Chris Coyier刚发的一篇帖子,使用CSS怎么写一个切口盒子(Notched Boxes)?其实这个效果早在@Lea Verou的CSS Secrets一书中有一个专门的小节介绍CSS怎么实现这个斜切口的效果。所以说这不是什么新东西。不过接下来的内容和前面还是略有不同。

使用到的技术

@Lea Verou曾经介绍了几种实现盒子斜切口的效果,比如说使用CSS的linear-gradientclip-path等。那么接下来的的内容其实除了运用到了clip-path之外,还使用了CSS的自定义属性以及CSS的calc()函数。从单个技术点上而言,或许大家都清楚他们的特性,或者很多同学都能灵活的使用这些CSS特性。那么今天重新花一篇篇幅来介绍,主要是因为:

clip-pathcalc()和CSS自定义变量结合一起来使用,制作切口盒子会变得很容易,也很灵活。

实现过程

还是看看为什么结合他们,会让我们事情变得更轻松。

首先来看clip-path。对于了解过clip-path的同学来说,这个不是很难的事情,在clip-path中提供了一个polygon()函数,在这个函数中我们可以传很多个点的坐标(通过每个点的xy来确定点在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 */
        );
}

效果如下:

剩余80%内容付费后可查看
返回顶部