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

0

Эффект бегущей волны на чистом 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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.