Мне очень нравится этот способ создания бегущей волны для последующей ее анимации. Почему? Здесь мы не используем никакой графики, только свойства CSS . А если нет http -запроса, то можно рассчитывать на быструю отработку анимации.

Эффект бегущей волны на чистом CSS

Мне очень нравится этот способ создания бегущей волны для последующей ее анимации. Почему? Здесь мы не используем никакой графики, только свойства CSS. А если нет http-запроса, то можно рассчитывать на быструю отработку анимации.

Создание рамок для волны

Бегущая волна двигается внутри жестко заданных рамок. Создадим блок div с классом wavy, разместим его в центре страницы и временно окрасим бокс в белый цвет.

<div class="wavy"></div>

*{
    margin: 0;/*обнуление отступов*/
    padding: 0;/*обнуление полей*/
    box-sizing: border-box;/*не учитывать рамки*/
}
body {
    display: flex;/*флексовый контейнер*/
    justify-content: center;/*горизонтальное центрирование*/
    align-items: center;/*вертикальное центрирование*/
    min-height: 100vh;/*на всю высоту экрана*/
    background: #222;/*цвет фона*/
}
.wavy {
    position: relative;/*относительное позиционирование*/
    width: 200px;/*ширина бокса*/
    height: 50px;/*высота бокса*/
    background: white;
    overflow: hidden;/*переполненность скрыть*/
    z-index: 1;/*на верхний слой*/
}


Эффект бегущей волны на чистом CSS.

Создание волны

Создадим волну при помощи стилизации псевдоэлемента before. В качестве контента зададим строку "aaaaaaa", чтобы сработали три свойства: text-decoration-*. Волна - это подчеркивание текста со значением wavy. Поскольку сам текст нам не нужен, то зададим ему прозрачный цвет. Итак текст скрыт, а подчеркивание (волна) осталась.

.wavy::before{
    content: 'aaaaaaaaa';/*текстовая строка*/
    position: absolute;/*абсолютное позиционирование*/
    top: -42px;/*позиция сверху*/
    left: 0;/*позиция слева*/
    font-size: 4em;/*размер шрифта*/
    height: 50%;/*высота*/
    color: black;/*цвет текста*/
    text-decoration-style: wavy;/*стиль подчеркивания*/
    text-decoration-color: #1E88E5;/*цвет подчеркивания*/
    text-decoration-line: underline;/*включить подчеркивание*/
    animation: animate 1s linear infinite;/*название длительность стиль анимации*/
}


Эффект бегущей волны на чистом CSS.

Меняем черный цвет текста на прозрачный.

color: transparent;

Эффект бегущей волны на чистом CSS.

Анимация волны

Создадим бесконечное, горизонтальное, линейное движение волны внутри белой рамки. Затем поменяем белый цвет на цвет фона. Белый цвет был нужен только в обучающих целях для наглядности.

@keyframes animate{
    0%
    {
        transform: translateX(-1px);
    }
    100%
    {
        transform: translateX(-57px);
    }
}

.wavy {
    position: relative;
    width: 250px;
    height: 50px;
    background: #222;
    overflow: hidden;
    z-index: 1;
}


Эффект бегущей волны на чистом CSS.

Создание волны при помощи подчеркивания текста - это очень элегантный и простой способ, который легко анимировать. Минимум кода - максимум скорости загрузки страницы.

Посмотрите пример на CodePen