使用 CSS 创建文字波浪效果

391 阅读2分钟

通过 CSS,我们可以为网站增添一些有趣的动画,从而使其看起来更加精致。那么,何不试试文字波浪效果呢?🌊

在本教程中,我将指导你如何使用一个非常酷的属性——clip-path,来添加类似波浪的动画效果。

什么是 clip-path 属性?

根据 MDN 文档,clip-path CSS 属性创建了一个剪切区域,用于设置我们希望显示的元素部分。我们选择的区域内的部分可见,而其他部分将被隐藏。

该属性附带了一组基本形状,你可以用它们来“裁剪”你的元素:inset(矩形)、circle、ellipse、polygon 和 path(允许你根据 SVG 裁剪形状)。

HTML

为了实现这个效果,我将使用两个

元素:一个作为文字的轮廓,另一个作为“填充”,我们将使用 clip-path 属性对其进行动画处理。

<h2 class="border">wavy</h2>
<h2 class="wave">wavy</h2>

现在我们继续看 CSS!

CSS

先从显示的行为开始,选择一个字体、背景颜色,并将文字居中。

body {
    background: #faf8f7;
    height: 100vh;
    width: 100vw;
    display: flex;
    align-items: center;
    justify-content: center;

    font-family: "Work Sans", sans-serif;
}

接下来,我们将直接修改 h2 元素的属性,确保将位置设置为 absolute。这将使我们能够将一个元素放在另一个元素的正上方:

h2 {
    font-size: 15vmin;
    position: absolute;
}

现在,我们来设置文字的轮廓和颜色:

.border {
    color: black;
    text-shadow:
       -1px -1px 0 white,
       1px -1px 0 white,
       -1px 1px 0 white,
       1px 1px 0 white;
}

到目前为止,文字看起来像这样:

最后,我们将定义颜色以及一个波浪动画。在这个动画中,我们将使用 clip-path 属性来模拟运动:

.wave {
    color: white;
    animation: shift 3s ease-in-out infinite;
}

此时,你将看到完整的文字:

现在是最难的部分了!为了模拟波浪运动,我们将使用 polygon() CSS 函数来裁剪元素。通过调整它,我们将隐藏文字的部分。

裁剪的方式是通过定义百分比来移动元素的 x 和 y 轴。我们可以创建从简单到复杂的形状。幸运的是,有一些现有的工具可以帮助我们可视化不同的形状:可以看看 Bennett Feely 的 Clippy 工具

添加动画的第一个实例,向你展示裁剪的工作原理:

@keyframes shift {
    0%, 100% {
        clip-path: polygon(0% 47%, 10% 48%, 33% 54%, 54% 60%, 70% 61%, 84% 59%, 100% 52%, 100% 100%, 0% 100%);
    }
}

最后,添加动画的最后一部分:

    50% {
        clip-path: polygon(0% 60%, 15% 65%, 34% 66%, 51% 62%, 67% 50%, 84% 45%, 100% 46%, 100% 100%, 0% 100%);
    }

结果如下:

原文:pokecoder.hashnode.dev/create-a-wa…