CSS: Как сделать переливающийся бордюр

CSS
Чтобы сделать так, чтобы бордюр (граница) элемента плавно менял цвета, можно использовать CSS-анимацию и свойства градиента. Вот несколько способов реализации этого эффекта:

Использование анимации и градиента


Если хотите, чтобы граница плавно менялась между двумя цветами, можно использовать линейный градиент и анимацию:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Меняющийся бордюр</title>
    <style>
        .border-animated {
            width: 200px;
            height: 200px;
            margin: 50px auto;
            box-shadow: inset 0 0 0 3px transparent; /* внутренняя рамка */
            animation: border-change 5s infinite alternate;
        }

        @keyframes border-change {
            0% {
                box-shadow: inset 0 0 0 3px rgba(255, 0, 0, 1); /* красный */
            }
            100% {
                box-shadow: inset 0 0 0 3px rgba(0, 0, 255, 1); /* синий */
            }
        }
    </style>
</head>
<body>
    <div class="border-animated"></div>
</body>
</html>

Переливающееся изменение цвета границ


Если хотите, чтобы бордюр плавно переливался между несколькими цветами, можно использовать градиентный переход и анимацию:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Переливающийся бордюр</title>
    <style>
        .rainbow-border {
            width: 200px;
            height: 200px;
            margin: 50px auto;
            border-radius: 50%;
            background: radial-gradient(ellipse at center, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 100%);
            box-shadow: inset 0 0 0 3px transparent; /* внутренний бордюр */
            animation: rainbow-border 10s infinite linear;
        }

        @keyframes rainbow-border {
            0% {
                box-shadow: inset 0 0 0 3px rgb(255, 0, 0); /* Красный */
            }
            25% {
                box-shadow: inset 0 0 0 3px rgb(255, 255, 0); /* Желтый */
            }
            50% {
                box-shadow: inset 0 0 0 3px rgb(0, 255, 0); /* Зеленый */
            }
            75% {
                box-shadow: inset 0 0 0 3px rgb(0, 0, 255); /* Синий */
            }
            100% {
                box-shadow: inset 0 0 0 3px rgb(255, 0, 0); /* Красный */
            }
        }
    </style>
</head>
<body>
    <div class="rainbow-border"></div>
</body>
</html>

Что происходит в коде:
  • box-shadow: свойство, которое позволяет создать внутреннюю границу элемента (это наша "линия").
  • @keyframes: анимация, которая изменяет цвет внутренней границы плавно между ключевыми кадрами.
  • transition: плавный переход между цветами можно задать и без градиента, но с анимацией (эффект плавного перетекания цветов).

Используя анимацию и градиенты, вы можете легко реализовать эффект плавно меняющегося цвета бордюра. Оба представленных способа просты в реализации и дадут интересный визуальный эффект.
Автор:  28.10.2025 07:11:44 pm