Демо
  • 5,82 КБ
  • HTML, CSS
  • Кнопка
  • анимация, неон
  • Лицензия MIT
HTML
<a href="#">
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    Неоновая кнопка
</a>
CSS
@import url("https://fonts.googleapis.com/css2?family=Tektur&display=swap");
a {
    position: relative;
    padding: 25px 30px;
    color: #03e9f4;
    text-decoration: none;
    text-transform: uppercase;
    -webkit-transition: 0.5s;
    -o-transition: 0.5s;
    -moz-transition: 0.5s;
    transition: 0.5s;
    letter-spacing: 4px;
    overflow: hidden;
    font-family: "Tektur", sans-serif;
}
a:hover {
    background: #03e9f4;
    color: #050801;
    -webkit-box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 200px #03e9f4;
    -moz-box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 200px #03e9f4;
    box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4, 0 0 200px #03e9f4;
    -webkit-box-reflect: below 1px linear-gradient(transparent, #0005);
}
a span {
    position: absolute;
    display: block;
}
a span:nth-child(1) {
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background: -webkit-gradient(linear, left top, right top, from(transparent), to(#03e9f4));
    background: -webkit-linear-gradient(left, transparent, #03e9f4);
    background: -moz-linear-gradient(left, transparent, #03e9f4);
    background: -o-linear-gradient(left, transparent, #03e9f4);
    background: linear-gradient(90deg, transparent, #03e9f4);
    -webkit-animation: animate1 1s linear infinite;
    -moz-animation: animate1 1s linear infinite;
    -o-animation: animate1 1s linear infinite;
    animation: animate1 1s linear infinite;
}
@-webkit-keyframes animate1 {
    0% {
        left: -100%;
    }
    50%,
    100% {
        left: 100%;
    }
}
@-moz-keyframes animate1 {
    0% {
        left: -100%;
    }
    50%,
    100% {
        left: 100%;
    }
}
@-o-keyframes animate1 {
    0% {
        left: -100%;
    }
    50%,
    100% {
        left: 100%;
    }
}
@keyframes animate1 {
    0% {
        left: -100%;
    }
    50%,
    100% {
        left: 100%;
    }
}
a span:nth-child(2) {
    top: -100%;
    right: 0;
    width: 2px;
    height: 100%;
    background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#03e9f4));
    background: -webkit-linear-gradient(top, transparent, #03e9f4);
    background: -moz-linear-gradient(top, transparent, #03e9f4);
    background: -o-linear-gradient(top, transparent, #03e9f4);
    background: linear-gradient(180deg, transparent, #03e9f4);
    -webkit-animation: animate2 1s linear infinite;
    -moz-animation: animate2 1s linear infinite;
    -o-animation: animate2 1s linear infinite;
    animation: animate2 1s linear infinite;
    -webkit-animation-delay: 0.25s;
    -moz-animation-delay: 0.25s;
    -o-animation-delay: 0.25s;
    animation-delay: 0.25s;
}
@-webkit-keyframes animate2 {
    0% {
        top: -100%;
    }
    50%,
    100% {
        top: 100%;
    }
}
@-moz-keyframes animate2 {
    0% {
        top: -100%;
    }
    50%,
    100% {
        top: 100%;
    }
}
@-o-keyframes animate2 {
    0% {
        top: -100%;
    }
    50%,
    100% {
        top: 100%;
    }
}
@keyframes animate2 {
    0% {
        top: -100%;
    }
    50%,
    100% {
        top: 100%;
    }
}
a span:nth-child(3) {
    bottom: 0;
    right: 0;
    width: 100%;
    height: 2px;
    background: -webkit-gradient(linear, right top, left top, from(transparent), to(#03e9f4));
    background: -webkit-linear-gradient(right, transparent, #03e9f4);
    background: -moz-linear-gradient(right, transparent, #03e9f4);
    background: -o-linear-gradient(right, transparent, #03e9f4);
    background: linear-gradient(270deg, transparent, #03e9f4);
    -webkit-animation: animate3 1s linear infinite;
    -moz-animation: animate3 1s linear infinite;
    -o-animation: animate3 1s linear infinite;
    animation: animate3 1s linear infinite;
    -webkit-animation-delay: 0.5s;
    -moz-animation-delay: 0.5s;
    -o-animation-delay: 0.5s;
    animation-delay: 0.5s;
}
@-webkit-keyframes animate3 {
    0% {
        right: -100%;
    }
    50%,
    100% {
        right: 100%;
    }
}
@-moz-keyframes animate3 {
    0% {
        right: -100%;
    }
    50%,
    100% {
        right: 100%;
    }
}
@-o-keyframes animate3 {
    0% {
        right: -100%;
    }
    50%,
    100% {
        right: 100%;
    }
}
@keyframes animate3 {
    0% {
        right: -100%;
    }
    50%,
    100% {
        right: 100%;
    }
}

a span:nth-child(4) {
    bottom: -100%;
    left: 0;
    width: 2px;
    height: 100%;
    background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#03e9f4));
    background: -webkit-linear-gradient(bottom, transparent, #03e9f4);
    background: -moz-linear-gradient(bottom, transparent, #03e9f4);
    background: -o-linear-gradient(bottom, transparent, #03e9f4);
    background: linear-gradient(360deg, transparent, #03e9f4);
    -webkit-animation: animate4 1s linear infinite;
    -moz-animation: animate4 1s linear infinite;
    -o-animation: animate4 1s linear infinite;
    animation: animate4 1s linear infinite;
    -webkit-animation-delay: 0.75s;
    -moz-animation-delay: 0.75s;
    -o-animation-delay: 0.75s;
    animation-delay: 0.75s;
}
@-webkit-keyframes animate4 {
    0% {
        bottom: -100%;
    }
    50%,
    100% {
        bottom: 100%;
    }
}
@-moz-keyframes animate4 {
    0% {
        bottom: -100%;
    }
    50%,
    100% {
        bottom: 100%;
    }
}
@-o-keyframes animate4 {
    0% {
        bottom: -100%;
    }
    50%,
    100% {
        bottom: 100%;
    }
}
@keyframes animate4 {
    0% {
        bottom: -100%;
    }
    50%,
    100% {
        bottom: 100%;
    }
}

Этот фрагмент кода демонстрирует создание эффекта неоновой кнопки с помощью HTML и CSS, показывая современный и привлекательный прием веб-дизайна. В начале, HTML-структура минималистична, сосредоточена на элементе-ссылке <a href="#">, окруженном четырьмя элементами span, которые играют ключевую роль в анимации кнопки и её визуальной привлекательности, создавая динамичные элементы, которые светятся и анимируются для достижения эффекта неона.

В CSS части начинается с импорта конкретного шрифта из Google Fonts, задавая тон для стильного представления текста внутри кнопки. Стилизация тега ссылки с использованием неонового цвета #03e9f4, с различными состояниями и переходами, усиливает взаимодействие пользователя. Особенно важен эффект при наведении, когда изменяется цвет фона и достигается свечение с помощью box-shadow, слоистый в разных интенсивностях для создания глубокого, светящегося неонового эффекта, дополнительно усиленного эффектом отражения -webkit-box-reflect.

Анимации определены для каждого из элементов span, с ключевыми кадрами, перемещающими эти элементы по определенным паттернам для имитации мерцающего неонового света вокруг кнопки. Каждая анимация настроена с небольшой задержкой вариации, создавая последовательность, которая оживляет кнопку и делает ее привлекательной. Использование градиентов в этих спанах, переходящих от прозрачного к неоновому цвету, вместе с линейными анимациями, способствует созданию динамичного, светящегося периметра, который привлекает внимание.

В целом, этот фрагмент показывает, как можно использовать CSS для создания интересных, интерактивных веб-элементов, улучшающих пользовательский опыт. Комбинация анимации, box-shadow и переходов цвета не только выделяет кнопку, но и добавляет современную эстетику на веб-страницу.

Меню