Анимация на CSS3 с использованием Icon Fonts
vladimir вс, 02/24/2013 - 13:03 CSS3
В этом уроке рассмотрим красивый эффект с использованием Icon Fonts и моего любимого приложения IcoMoon. Помимо оригинального эффекта, следующая техника отличается простотой. Мы будем использовать набор социальных иконок, сгенерированных с помощью приложения IcoMoon, а потом добавим оригинальный эффект при наведении.
Сохраняем социальные иконки в виде шрифта
Первым делом идём на сайт сервиса IcoMoon. Для этого урока будем использовать 6 социальных иконок: dribbble, facebook, twitter, pinterest, tumblr, flickr, google plus и github. Выбираем в приложении соответствующие иконки и сохраняем. Если вы испытываете проблемы с использованием Icon Fonts и IcoMoon, почитайте статью “Webfont Icons: альтернатива картинкам”.
Итак, наш набор иконок готов к использованию.
Папка IcoMoon содержит style.css файл, который будет использоваться в качестве базы. Начнём:
@font-face { font-family: 'icomoon'; src:url('fonts/icomoon.eot'); src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'), url('fonts/icomoon.woff') format('woff'), url('fonts/icomoon.ttf') format('truetype'), url('fonts/icomoon.svg#icomoon') format('svg'); font-weight: normal; font-style: normal; } .icon-dribbble:before, .icon-twitter:before, .... { font-family: 'icomoon'; speak: none; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; } .icon-dribbble:before { content: "e00a"; } .icon-twitter:before { content: "e00b"; } ....
Создаём разметку HTML для IconFonts
Здесь мы использовали aria-hidden атрибуты, чтобы элементы не были видны для считывающих устройств.
Идея hover-эффекта с IconFonts
Идея заключается в создании эффекта перемещения содержимого внутри блока при наведении. Устанавливаем всем элементам “li” свойство overflow в значение hidden, а высоту элементов “a” делаем в 2 раза больше, чем “li”. Вместе с псевдоклассом ”a:after” мы дублируем иконку. При наведении на “li” меняем цвет фона, элемент “a” смещаем вверх на половину высоты. Все эти изменения выполняем с помощью transition.
Добавляем иконки Font Icons в стили
Дублируем иконки для псевдоклассов icon-*:before и icon-*:after:
.icon-dribbble:before, .icon-twitter:before, ..., .icon-github:before, .icon-dribbble:after, .icon-twitter:after, ..., .icon-github:after { font-family: 'icomoon'; speak: none; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; } .icon-dribbble:before, .icon-dribbble:after { content: "e00a"; } .icon-twitter:before, .icon-twitter:after { content: "e00b"; } ...
Дописываем оставшийся CSS:
ul.social { text-align: center; } ul.social li { display: inline-block; width: 60px; height: 60px; overflow: hidden; line-height: 60px; background: #404040; /* --- optional, it looks nice also with simple squares --- */ border-radius: 100%; transition-duration: 0.7s; } /* --- hover effect : background color change --- */ ul.social li:hover { background: #33cc99; box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.3); } ul.social li a { display: block; width: 100%; height: 200%; position: relative; top: 0; color: #33cc99; transition: top 0.7s; } /* --- hover effect : shift up --- */ ul.social li:hover a { top: -60px; } ul.social li a:after { position: absolute; width: inherit; height: 50%; left: 0; bottom: 0; color: #404040; line-height: 60px; text-align: center; }
И вот результат:
Источник
- Войдите, чтобы оставлять комментарии