背景有一天,群友在群里问这样一个问题,如何用CSS实现如下布局:在CSS的世界里,如果只有如下效果很容易实现:涉及圆角或波浪效果,难度会增加很多。要实现这种连续平滑的曲线其实还是挺麻烦的。当然,也不是没有可能。在这篇文章中,我将带大家看看使用CSS实现上述凹面平滑圆角效果的一些可能的方法。使用圆的连接来实现第一种方法是比较愚蠢的。我们可以使用多个圆的收敛。首先我们实现一个矩形,里面有一个矩形:
核心CSS代码如下:div{height:200px;background:linear-gradient(90deg,#9c27b0,#9c27b0110px,transparent110px,transparent190px,#9c27b0190px),线性渐变(90deg,#9c27b0,#9c27b0);背景大小:100%20px,100%100%;背景位置:00、020px;background-repeat:no-repeat;}得到这样的图形(有很多种实现方式,这里我用的是渐变):接下来用伪元素叠加三个圆圈,大概是这样的:div{...&::before{position:absolute;content:"";width:40px;height:40px;border-radius:50%;background:#000;left:90px;box-shadow:40px00#000,80px00#000;}}稍微修改三个圆的颜色,我们可以得到如下效果:可以看到3个圆叠加得到的效果不是很好,只能说勉强还原了,如果背景色不是纯色,会显老:完整代码可以戳这里:CodePenDemo-平滑凹圆角[1]下面通过filter实现,这是本文的重点,会介绍一个使用滤镜的方式来达到这种效果。当你听到过滤器时,你可能会感到惊讶,嗯?这个效果好像跟滤镜没有关系吧?接下来,就是见证奇迹的时刻。首先,我们只需要实现这样一个图形: