Сегодня мы вам покажем как создавать простые анимированные всплывающие подсказки с помощью свойства CSS3 transitions
и псевдо-классов :before
, :after
.
Идея состоит в том, чтобы составить список с ссылками, в нашем случае, социальными иконками, которые будут показывать небольшие подсказки при наведении курсора мыши.
Неупорядоченный список будет выглядеть вот так:
1 2 3 4 5 6 7 8 |
<ul class="tt-wrapper"> <li><a class="tt-gplus" href="#"><span>Google Plus</span></a></li> <li><a class="tt-twitter" href="#"><span>Twitter</span></a></li> <li><a class="tt-dribbble" href="#"><span>Dribbble</span></a></li> <li><a class="tt-facebook" href="#"><span>Facebook</span></a></li> <li><a class="tt-linkedin" href="#"><span>LinkedIn</span></a></li> <li><a class="tt-forrst" href="#"><span>Forrst</span></a></li> </ul> |
Элементы этого списка будут со свойством float:left
, а у анкоров будут следующие CSS свойства:
1 2 3 4 5 6 7 8 9 |
.tt-wrapper li a{ display: block; width: 68px; height: 70px; margin: 0 2px; outline: none; background: transparent url(../images/icons.png) no-repeat top left; position: relative; } |
Так как используется техника спрайтов, следовательно для каждого анкора будет свое свойство background position
для фонового изображения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
.tt-wrapper li .tt-gplus{ background-position: 0px 0px; } .tt-wrapper li .tt-twitter{ background-position: -68px 0px; } .tt-wrapper li .tt-dribbble{ background-position: -136px 0px; } .tt-wrapper li .tt-facebook{ background-position: -204px 0px; } .tt-wrapper li .tt-linkedin{ background-position: -272px 0px; } .tt-wrapper li .tt-forrst{ background-position: -340px 0px; } |
Элемент span
будет работать, как всплывающая подсказка, значит при загрузке страницы его надо спрятать установив свойство opacity
на 0. Далее, при наведении курсором мыши на анкор, покажем span
с эффектом всплыва:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
.tt-wrapper li a span{ width: 100px; height: auto; line-height: 20px; padding: 10px; left: 50%; margin-left: -64px; font-family: 'Alegreya SC', Georgia, serif; font-weight: 400; font-style: italic; font-size: 14px; color: #719DAB; text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); text-align: center; border: 4px solid #fff; background: rgba(255,255,255,0.3); text-indent: 0px; border-radius: 5px; position: absolute; pointer-events: none; bottom: 100px; opacity: 0; box-shadow: 1px 1px 2px rgba(0,0,0,0.1); transition: all 0.3s ease-in-out; } |
Для отрисовки маленького треугольного указателя, мы будем использовать псевдо-элементы :before
и :after
. О технике создания простых геометрических элементов мы уже упоминали в этом блоге: в Геометрические фигуры на CSS и в Создаем треугольники на CSS. Тоже самое применим и в этом случае, только использовать будем псевдо-элементы. Причем элемент :before
будет использоваться, как тень для элемента :after
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
.tt-wrapper li a span:before, .tt-wrapper li a span:after{ content: ''; position: absolute; bottom: -15px; left: 50%; margin-left: -9px; width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 10px solid rgba(0,0,0,0.1); } |
Смещаем :after
на пиксель и делаем его белым, таким образом имитируется тень для указателя:
1 2 3 4 5 |
.tt-wrapper li a span:after{ bottom: -14px; margin-left: -10px; border-top: 10px solid #fff; } |
При наведении курсором мыши на анкор, показываем span
и его анимацию движения:
1 2 3 4 |
.tt-wrapper li a:hover span{ opacity: 0.9; bottom: 70px; } |
И вуаля! Очень простые анимированные подсказки готовы!
Кроме того, вы можете посмотреть еще примеры с альтернативными стилями для всплывающих подсказок.
Напоминаем, что это будет работать только в браузерах, которые поддерживают псевдо-элементы и CSS transition
.