Делаем всплывающую подсказку - 1 Августа 2009 - Блог U.S.F. - U.S.F.
Я в твиттере Архив записей Подписаться на обновления

Делаем всплывающую подсказку
01.08.09

Вчера просто нереально как понадобилось установить всплывающую подсказку! Через полчаса моих мук я всеже вспомнил про атрибут тега <a> - title. Все бы ничего, но подсказка появляется спустя СЕКУНДУ после наведения, а в некоторых случаях(например моем) это неприменимо. Что же делать? Подключил серч и нашол способ. Опишу его.

Есть такой замечательный тег как <span> который юзается для определния стиля внутри блоков с другим стилем. Для описания слова для которого будет подсказка возьмем тег <a>  но чтобы отделить его от ссылки дадим ему класс "vsl_help" который опишем в CSS.  Записи будут иметь вид

Code
<a href="#" class="vsl_help">CSS<span> Каскадные таблицы стилей</span></a> 
В href использовал знак # для того чтобы по ссылке не уплыли никуда.
Code
a.vsl_help { text-decoration:none; color:#000; border-bottom:dashed 1px #000; }<BR>a.vsl_help span { display:none;}<BR>a.vsl_help:hover { position:relative; }<BR>a.vsl_help:hover span { position:absolute; display:block; left:10px; top:-16px;<BR>border:solid 1px #000; background:#ddd; color:#000; white-space:pre; padding:1px;}

Это код CSS.

Поясню что к чему:

Code
a.vsl_help span { display:none;}

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

Code
a.vsl_help { text-decoration: none; color:#000; border-bottom: dashed 1px #000; }

Устанавливаем стиль слова для которого делаем пояснение. Также оно подчеркивается пунктирной линией.

Code
a.vsl_help:hover span { position:absolute; display:block; left:10px; top:-16px;
border:solid 1px #000; background:#ddd; color:#000; white-space:pre; padding:1px; }

Стиль самой всплывающей подсказки.

Как видно, можно делать всплывающую подсказку и на ссылки с переходом. Для этого вместо # написать ссылку.
Плюсы этого метода: простота, появляется сразу.
Минусы: позиция подсказки обсолютна и подсказку видно только относительно этого обсолютного места положения. Если прокрутить блок, то она исчезает.

Поэтому я решил искать другие способы.
Они как правило основаны на яваскрипте.

Сперва расмотрим скрипт, который резервирует атрибут title у ссылки и выводит в подсказке.
js файл .

в CSS пишем следующее

Code
div.nicetitle {
  position: absolute;
  padding: 4px;
  top: 0px;
  left: 0px;
  color: white;
  font-size: 13px;
  font-family: Verdana, Helvetica, Arial, sans-serif;
  width: 25em;
  font-weight: bold;
  background: url(/images/ntbg.png);
   
  /* Mozilla proprietary */
  -moz-border-radius: 12px;
}
div.nicetitle p {
  margin: 0; padding: 0 3px;
}
div.nicetitle p.destination {
  font-size: 9px;
  text-align: left;
  padding-top: 3px;
}

В начале страницы в которой будет использоватся подсказка обязательно прописать
Code
<script type="text/javascript" src="toltip.js"></script>

Все бы хорошо, но вот размер js был 7Kb.

Я решил поискать еще чтолибо. И нашол.

Этот тот вид подсказки что сейчас у меня на сайте.

Этот тег работает через саб-тег ALT. Он работает ДЛЯ КАРТИНОК. Именно поэтому я и выбрал его. Размер js файла всего 4 Kb.
js файл
Между и вставляем

Code
<script type="text/javascript" src="tooltip.js">

В CSS пихаем это:

Code
#tooltip {
  background:#FFFFFF;
  border-left:1px solid #006699;  
  border-right:1px solid #006699;  
  border-bottom:1px solid #006699;  
  border-top:3px solid orange;
  font:11px tahoma;
  color:#1B4966;
  padding:6px 7px;
  position:absolute;
  visibility:hidden;
}

Вот и все. Теперь значение атрибута ALT выводится в подсказке мгновенно.
Плюсы в том что настраивается он через CSS и корректно отображается в старых браузерах.

Далее немного модифицированная версия скрипта выше. Она обрабатывает не только тег ALT картинок, но и тег TITLE в ссылках!
js файл

Также настраивается через CSS

Code
#tooltip{
background:#FFFFFF;
border:1px solid #666666;
color:#333333;
font:menu;
margin:0px;
padding:3px 5px;
position:absolute;
visibility:hidden
}

Делаем выводы: всплывающие подсказки можно зделать обычным CSS. Просто создав отдельный класс и зарезервировав для него определенный тег, или же с помощью яваскрипта.

Лето, жарень. Что может быть приятней, чем принять прохладный душ? Поднакопив, я заказал себе установку душевой кабины, и теперь могу принимать холодные души хоть целый день! В такую жару- то что надо! 

ПОЧИТАТЬ ЕЩЕ:
Теги: html/CSS, JavaScript

1. hoithGenthill [10.04.10 в 00:34]
работает, спасибо

2. usf [10.04.10 в 00:48]
dry

3. Rotten9 [12.08.10 в 16:01]
попробуем))
хотя я приверженец решения на яваскрипт..кроссбраузерность важна)

Имя *:
Email:
Ваш сайт:
Хотите что-то сказать?
Код *:

Хостинг от uCoz