Сегодня рассмотрим небольшую коллекцию анимированных ховер-эффектов иконок на основе иконочного шрифта. Это позволит расширить удобство в оформление внешнего вида и уменьшить необходимость использования графических редакторов. Имеется в виду не анимация, а веб-иконки. То есть весь дизайн, как и сама анимация, построена только средствами CSS. И если понадобиться изменить цвет или еще что-то, то нужно будет лишь подправить код, а не рисовать все с нуля.
Для создания веб-иконок воспользуемся шрифтом Font Awesome. Он может применяться как к псевдо-элементам, так и встраивается в файл через тег <i> </i>
. Это очень практично тем более, когда приходиться иметь дело только со стилями CSS. Вместо редактирования исходного кода, прописывается псевдо-элемент и через свойство content: "";
выводится иконка. В сборке используются оба варианта и на выходе получаем довольно красивые анимированные эффекты, при наведении курсора на иконку (ссылку).
HTML
<div class="phonewrap"> <span><i class="fa fa-phone"></i></span> <a href="#">Бесплатный звонок</a> </div>
CSS
.phonewrap { display: table; } .fa-phone { color: #fff; display: inline-block; font-size: 21px !important; line-height: 26px !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); vertical-align: middle; } .phonewrap span { background-color:#F95785; border-radius: 50%; display: inline-block; margin: 10px 5px; padding: 5px; width: 25px; height: 25px; text-align: center; } .phonewrap:hover > span i { animation: 1200ms ease 0s normal none 1 running shake; } @keyframes shake { 0% { transform: rotateZ(0deg); } 10% { transform: rotateZ(-30deg); } 20% { transform: rotateZ(15deg); } 30% { transform: rotateZ(-10deg); } 40% { transform: rotateZ(7.5deg); } 50% { transform: rotateZ(-6deg); } 60% { transform: rotateZ(5deg); } 70% { transform: rotateZ(-4.28571deg); } 80% { transform: rotateZ(3.75deg); } 90% { transform: rotateZ(-3.33333deg); } 100% { transform: rotateZ(0deg); } }
HTML
<div class="bellwrap"> <span><i class="fa fa-bell"></i></span> <a href="#">Оповещение</a> </div>
CSS
.bellwrap { display: table; } .fa-bell { color: #f9ec31; display: inline-block; font-size: 19px !important; line-height: 25px !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); transform-origin: 50% 0 0; vertical-align: middle; } .bellwrap span { background-color: #8087aa; border-radius: 50%; display: inline-block; margin: 10px 5px; padding: 5px; width: 25px; height: 25px; text-align: center; } .bellwrap:hover > span i { animation: 1300ms ease 0s normal none 1 running shake; } @keyframes shake { 0% { transform: rotateZ(0deg); } 10% { transform: rotateZ(-30deg); } 20% { transform: rotateZ(15deg); } 30% { transform: rotateZ(-10deg); } 40% { transform: rotateZ(7.5deg); } 50% { transform: rotateZ(-6deg); } 60% { transform: rotateZ(5deg); } 70% { transform: rotateZ(-4.28571deg); } 80% { transform: rotateZ(3.75deg); } 90% { transform: rotateZ(-3.33333deg); } 100% { transform: rotateZ(0deg); } }
HTML
<div class="heartwrap"> <span><i class="fa fa-heart"></i></span> <a href="#">Сердцебиение</a> </div>
CSS
.heartwrap { display: table; } .fa-heart { color: #fff; display: inline-block; font-size: 19px !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); transform-origin: 50% 50% 0; vertical-align: middle; line-height: 27px !important; } .heartwrap span { background-color: #B83D6C; border-radius: 50%; display: inline-block; margin: 10px 5px; padding: 5px; width: 25px; height: 25px; text-align: center; } .heartwrap:hover > span i { animation: 1500ms ease 0s normal none 1 running pulse; } @keyframes pulse { 0% { transform: scaleX(1) scaleY(1); } 10% { transform: scaleX(0.85) scaleY(0.85); } 20% { transform: scaleX(1) scaleY(1); } 30% { transform: scaleX(0.85) scaleY(0.85); } 40% { transform: scaleX(1) scaleY(1); } 50% { transform: scaleX(0.85) scaleY(0.85); } 60% { transform: scaleX(1) scaleY(1); } 70% { transform: scaleX(0.85) scaleY(0.85); } 80% { transform: scaleX(1) scaleY(1); } 90% { transform: scaleX(0.85) scaleY(0.85); } 100% { transform: scaleX(1) scaleY(1); } }
HTML
<a href="#" class="right1_1">Bump Right</a>
CSS
.right1_1{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_1:after { transition: margin .2s; margin-left: 7px; content: '\f0a9'; font-family: 'FontAwesome'; display: inline-block; } .right1_1:hover{color:#9D1396;} .right1_1:hover:after { margin-left: 12px; color:#9D1396; }
HTML
<a href="#" class="right1_2">Slide In & Out</a>
CSS
.right1_2{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_2:after { transition: all .25s; opacity: 0; margin-left: -.5em; content: '\f0a9'; font-family: 'FontAwesome'; display: inline-block; } .right1_2:hover{color:#9D1396;} .right1_2:hover:after { opacity: 1; margin-left: .4em; }
HTML
<a href="#" class="right1_3">Slide In & Out</a>
CSS
.right1_3{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_3:after { transition: margin .25s, opacity .25s, transform .25s; transform: rotate(-180deg); opacity: 0; margin-left: -10px; content: '\f0a9'; font-family: 'FontAwesome'; display: inline-block; } .right1_3:hover{color:#9D1396;} .right1_3:hover:after { transition: margin .5s, opacity .25s, transform .5s; transform: rotate(0); opacity: 1; margin-left: .7em; }
HTML
<a href="#" class="right1_4">Swoop In</a>
CSS
.right1_4{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_4:after { margin: 0; transform: rotate(20deg) translateX(-1.5em) translateY(-0.2em); opacity: 0; content: '\f061'; font-family: 'FontAwesome'; display: inline-block; } .right1_4:hover{color:#9D1396;} .right1_4:hover:after { transition: opacity .25s, transform .5s; transform: rotate(0) translateX(0.5em) translateY(0); opacity: 1; }
HTML
<a href="#" class="right1_5">Scale & Bump</a>
CSS
.right1_5{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; transform: translateY(1px); } .right1_5:after { margin: 0; transform: scale(0.6) translateX(0.3em) translateY(2px); transition: transform .25s; content: '\f054'; font-family: 'FontAwesome'; display: inline-block; } .right1_5:hover{color:#9D1396;} .right1_5:hover:after { transform: scale(1) translateX(0.8em) translateY(1px); }
HTML
<a href="#" class="right1_6">Shoot In</a>
CSS
.right1_6{ color: #5587c4; text-decoration: none; font:500 19px arial; } .right1_6:after { transition: margin 0s; margin-left: -10em; opacity: 0; content: '\f178'; font-family: 'FontAwesome'; display: inline-block; } .right1_6:hover{color:#9D1396;} .right1_6:hover:after { transition: margin .35s, opacity .1s; margin-left: .5em; opacity: 1; }
HTML
<a href="#" class="right1_7">Rotate In</a>
CSS
.right1_7{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_7:after { transform: rotate(-90deg) translateX(-1em) translateY(-1em); opacity: 0; content: '\f064'; font-family: 'FontAwesome'; display: inline-block; margin-left: 8px; } .right1_7:hover{color:#9D1396;} .right1_7:hover:after { transition: opacity .25s, transform .5s; transform: rotate(0) translateX(0) translateY(0); opacity: 1; }
HTML
<a href="#" class="right1_8">Take Off</a>
CSS
.right1_8{ color: #5587c4; text-decoration: none; font:500 19px arial; display: table; } .right1_8:after { transform: rotate(30deg) skew(-15deg); margin: 0; transform: scale(2) rotate(0) skew(0) translateX(-2em) translateY(1em); opacity: 1; visibility: hidden; content: '\f1d8'; font-family: 'FontAwesome'; display: inline-block; } .right1_8:hover{color:#9D1396;} .right1_8:hover:after { margin-left: 1em; transform: rotate(30deg) translateX(8em) translateY(-20em); opacity: 0; visibility: visible; transition: transform 2s, opacity 1.8s, visibility .15s; }
HTML
<a href="#" class="other1_1">Buzz</a>
CSS
.other1_1{ color: #696c72; background: #f2f2f2; border: 1px solid #ececec; padding: 5px; text-decoration: none; font:500 19px arial; display: table; backface-visibility: hidden; transform: translateZ(0px); transition-duration: 0.3s; vertical-align: middle; } .other1_1:after { padding-left: 9px; transform: translateZ(0px); content: ""; font-family: 'FontAwesome'; display: inline-block; } .other1_1:hover{color:#9D1396;} .other1_1:hover:after, .other1_1:focus:after, .other1_1:active:after { animation-duration: 0.15s; animation-iteration-count: infinite; animation-name: hvr-icon-buzz; animation-timing-function: linear; } @keyframes hvr-icon-buzz { 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(-3px) rotate(-2deg); } }
HTML
<a href="#" class="other1_2">Reboot</a>
CSS
.other1_2{ color: #696c72; background: #f2f2f2; border: 1px solid #ececec; text-decoration: none; font:500 19px arial; display: table; backface-visibility: hidden; padding: 5px; transform: translateZ(0px); transition-duration: 0.3s; vertical-align: middle; } .other1_2:after { margin-left:9px; transition-duration: 1s; transition-property: transform; transition-timing-function: ease-in-out; content:""; font-family: 'FontAwesome'; display: inline-block; } .other1_2:hover{color:#9D1396;} .other1_2:hover:after, .other1_2:focus:after, .other1_2:active:after { transform: rotate(360deg); } @keyframes hvr-icon-drop { 0% { opacity: 0; } 50% { opacity: 0; transform: translateY(-100%); } 51%, 100% { opacity: 1; } }
HTML
<a href="#" class="other1_3">Drop</a>
CSS
.other1_3{ color: #696c72; background: #f2f2f2; border: 1px solid #ececec; text-decoration: none; font:500 19px arial; display: table; backface-visibility: hidden; padding: 7px; position: relative; transform: translateZ(0px); transition-duration: 0.3s; vertical-align: middle; } .other1_3:after{ opacity: 1; margin-left:9px; transform: translateZ(0px); content: ""; font-family: 'FontAwesome'; display: inline-block; } .other1_3:hover{color:#9D1396;} .other1_3:hover:after, .other1_3:focus:after, .other1_3:active:after { animation-delay: 0.3s; animation-duration: 0.5s; animation-fill-mode: forwards; animation-name: hvr-icon-drop; animation-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); opacity: 0; transition-duration: 0.3s; } @keyframes hvr-icon-drop { 0% { opacity: 0; } 50% { opacity: 0; transform: translateY(-100%); } 51%, 100% { opacity: 1; } }
Ух-ты, отличные эффекты!
Вот теперь голову ломаю куда и какие приладить...
Спасибо!
Не за что)
Замечательно! Спасибо огромное! А как сделать так, что бы все это великолепие выпадало, выезжало и выкатывалось не после, а перед основным текстом?
Не за что) Ну, в целом так и задумано, чтобы стрелка была после текста. Но можете попробовать поменять псевдоэлемент
after
наbefore
. Может из этого что-то выйдет.