pl

Animowane gradientowe button’y CSS

Animowane gradientowe przyciski HTML. Gotowy kod CSS i HTML.

From the old frontend blog — kept for reference; it may no longer reflect current best practices. Browse the archive →

W internecie powstaje wiele wspaniałych rzeczy, także tych związanych ze światem frontendu. Dokładam swoją cegiełkę i przedstawiam kilkanaście animowanych gradientowych button’ów.

Animowany button

Istnieje mnóstwo animowanych button’ów z bardzo różnymi efektami. Starałem się zrobić coś nowego (chociaż to bardzo trudne). Stworzyłem button’y, w których animacja istnieje podczas zwykłego stanu, jak i również po najechaniu.

Demo

Kod

SCSS

@import url('https://fonts.googleapis.com/css?family=Poppins:300,400,500,700');.button-one {   background: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB); } .button-two {   background: linear-gradient(-45deg, #00F260, #0575E6); } .button-three {   background: linear-gradient(-45deg, #000046, #1CB5E0); } .button-four {   background: linear-gradient(-45deg, #833ab4, #fd1d1d, #fcb045); } .button-five {   background: linear-gradient(-45deg, #DA4453, #89216B); } .button-six {   background: linear-gradient(-45deg, #16BFFD, #CB3066); } .btn {   font-family: 'Poppins';   font-weight: 400;   letter-spacing: 0.5px;   transition: all 0.3s ease;   cursor: pointer;   border-radius: 6px;   background-size: 400% 400%;   color: #FFF;   text-transform: uppercase;   border: 0;   padding: 13px 30px;   font-size: 15px;   animation: Gradient 10s ease infinite; &:hover {     background-size: 150% 150%;   } } .button-outline {   animation: Gradient 10s ease infinite;   position: relative; span {     position: relative;     z-index: 2;   } &::after {     content:'';     position: absolute;     border-radius: 4px;     z-index: 0;     background: #333;     top: 2px;     bottom: 2px;     right: 2px;     left: 2px;     width: calc(100% - 4px);     height: calc(100% - 4px);   } } @keyframes Gradient {     0% {         background-position: 0% 50%     }     50% {         background-position: 100% 50%     }     100% {         background-position: 0% 50%     } }

HTML

<button class="btn button-gradient buttone-one">Click here!</button><button class="btn button-outline buttone-one">Click here!</button>Więcej HTML'a na codepen.

Jak powstały?

Wersje z tłem to najprostsze button’y z background: linear-gradient(). Możemy ustawiać wiele kolorów, edycja i wstawienie własnych kolorów jest banalnie prosta. Animacja polega na przesuwaniu pozycji tła poprzez właściwość background-position.

Wersja outline pod względem implementacji jak wersja z tłem. Różnicą jest ustawianie tła dla przycisku poprzez pseudoelement. Minusem tego rozwiązania jest konieczność ustawiania tła dla button’ów, tak aby pokrywało się z tłem danej sekcji.
Uzyskanie animowanych obramowań button’u nie jest najprostsze. Istnieje wiele sposobów, lecz z różnym efektem. Najbliżej najlepszego efektu jest clip-path.
Przedstawione w demo rozwiązanie jest kolejną opcją. Pod względem wydajnościowym oraz wsparcia przeglądarek jest bardzo dobrze.

Z podanego kodu można korzystać bez ograniczeń.