Всплывающие подсказки на CSS3

В данном уроке представлен очередной вариант организации всплывающих подсказок на CSS3. Используются CSS переходы и псевдо-элементы :before и :after. 

В демонстрации представлены ссылки на социальные сети с названиями в подсказкаx.

Разметка HTML

Для демонстрации используется неупорядоченный список:

Code
<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>


CSS

Элементы списка смещаются влево и ссылки будут иметь следующий вид:

Code
.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;
}


Каждая ссылка будет иметь разные положения фонового изображения:

Code
.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 работает как подсказка и будет скрыт с помощью начальной полной прозрачности. Будем использовать эффект проявления подсказки соскальзывании ее сверху, поэтому устанавливаем значение свойства bottom равным 100px, размещая ее сверху ссылки.

Code
.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;
}


Так как подсказка будет появляться при наведении курсора мыши на ссылку (а элемент span считается частью ссылки), то подсказка будет выводиться при проходе курсора мыши выше ссылки (элемент span здесь, но его непрозрачность равна 0, что делает его невидимым).

Для формирования указателя используем псевдо-элементы :before и :after. Мы задаем для них такие же стили и создаем треугольник с помощью прозрачных правых и левых рамок. Псевдо-элемент :before служит тенью для псевдо-элемента :after, поэтому мы устанавливаем черное значение rgba с низким уровнем непрозрачности.

Code
.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 смещается на пиксель и делается белым, по образу рамки вокруг подсказки:

Code
.tt-wrapper li a span:after{
  bottom: -14px;
  margin-left: -10px;
  border-top: 10px solid #fff;
}


При наведении курсора мыши мы перемещаем элемент span сверху и проявляем его:

Code
.tt-wrapper li a:hover span{
  opacity: 0.9;
  bottom: 70px;
}


И вот они - всплывающие подсказки. Демонстрация представляет еще три различных варианта анимации вывода подсказок.

  • FalleN

  • 1966

  • 1

  • 207

Ссылки на статью:

Похожие статьи: