Простой тултип или всплывающая подсказка

15 Feb, 2006

Довольно часто применяю этот простой прием, но еще о нем не рассказывал. Суть - при наведении мыши на определнный текст появляется краткое пояснение или расширенная информация рядом с текстом. Вот примерпример для оперы - оговорка одна - тултипы не должны перекрывать другие "тултипные" ссылки).

HTML

Так как :hover пока в ИЕ к сожалению поддерживается только для элемента a(ссылок) то вынужденный код - такой:
  1. <a class="tt" href="#"> Текст ссылки
  2. <span>Пояснение к ссылке </span>
  3. </a>
Класс tt просто говорит о том что спан внутри таких ссылок будет отображаться по наведению мышки. Без CSS данная конструкция выглядит вполне логично. К тому же можно вспомнить о поисковой оптимизации и использовать вот этот прием.

CSS

Дело за малым - заставить это все работать :). Вот такое простое CSS волшебство заставит тултип тултипиться :):
  1. a.tt span{
  2. display:none;/*собственно прячем тултип - пока мышь не наведена*/
  3. }
  4. a.tt:hover{
  5. position:relative;/*Ставим точку отсчета для тултипа внутрь данной ссылки*/
  6. z-index:23;/*это нужно что бы тултип показывался поверх этой и других ссылок*/
  7. }
  8. a.tt:hover span{
  9. display:block;/*показываем тултип при наведении*/
  10. position:absolute;
  11. top:-10px;
  12. left:40px;/*три строки для позиции тултипа относительно левого верхнего угла ссылки*/
  13. z-index:22;/*мне 22 + см. выше*/
  14. background:#fafafa;/*фон, что бы было видно тултип*/
  15. }
Вот собственно и все. Остальное украшательсво. Рабочий пример минимально приукрашенный + пример из жизни (даты 7 8 9 в календаре).

Конец

Вот такой до боли простой приемчик, нередко довольно эффектно выглядящий. Конечно ему не тягаться с тултипами гоняющимися за курсором мыши. Но и им по простоте с ним не тягаться. :) Авось кому сгодится...

Попап имеет вредное свойство "залипать" в Опере. Точнее это Опера имеет вредное свойство оставлять попап видимым даже после отвода мышки от ссылки. Вредное свойство проявляется далеко не всегда.:-)

Вариант для оперы

42 комментариев к “Простой тултип или всплывающая подсказка”

1.alex-and-r | 15 Feb, 2006
Хм... Вопрос первый: семантическая корректность. Как с ней быть? Вы не брали это в расчет? Вопрос второй: seo. Там же четко про бан в комментах говорится по ссылке на пример поисковой оптимизации, нет? Вопрос третий (собственно больше всего интересующий, а остальные так, риторические): значение "23" для св-ва "z-index" выбрано просто наобум или с каким-то умыслом?
2.akella | 15 Feb, 2006
Собсно ответ номер 1:Семантическая корректность в смысле чтения читателями экранов? Если вспомнить о ней, можно использовать псевдоселекторы :after :before и раставить скобки около текста внутри спана, примерно так: a.tt span:before { content: "(" } a.tt span:after{ content: ")" } Для уменьшения интонации можно вместо span использовать small например. Какой именно недостаток в семантике пояснения к тексту ссылки здесь, может я неправильно понял? Ответ 2: ну в том посте на который я сослался безусловно метод мог быть совсем корректен и семантичен - там юзера вообще не видели того текста и соответственно туда могли писать что угодно. А в данном случае нужно писать осмысленную информацию и я не вижу причин банить пояснение к ссылке. Наверно потому что их нет. Это обычный контент. Все в рамках, имхо. Банят если туда вписать 10 кейвордов и так раз 20 на странице. Здесь же все по смыслу должно быть - иначе, что за прикол юзеру читать ваше семантическое ядро. Ответ 3: в данном случае важно лишь что 22 меньше чем 23. Оба они больше 0 и меньше 256. Значение з-индекс указывает какой блок должен быть отображен поверх какого. У кого меньше тот и главный. :) Конкретные значения выбраны исходя из возраста автора поста.
3.Vladson | 15 Feb, 2006
По поводу №2 (ИМХО): В первую очередь это такой-же контент как и любой другой, то что он скрыт до наведения на него мышью не значит что он скрыт совсем а стало быть никаких причин для бана нету. Если какой-то поисковик будет банить за такое то это его проблемы а не мои, я как чесный дизайнюк делаю дизайн для людей а не для поисковых машин, так что если им что-то не нравится пускай идут "наффик".
4.ganges | 15 Feb, 2006
Насчет семантики, с моей точки зрения там вообще нет проблем - span семантики не несет. стало быть объяснение это просто продолжение ссылки, чем оно и есть. Для скринридеров, опятьже имхо, это только хорошо. - лучше чем без объяснения - оно прочитает LINK - и дальше раскажет о чем этот линк. По поводу бана - если за такие вещи Гугл и будет банить, то только если туда спам вписывать повторяющийся. Это просто ссылка. По поводу usability В твоем примере тултип перекрывает две нижеследующие ссылки и надо делать дополнительное движение. чтобы от него избавиться (Linux FF) ИМХО, в тексте это ОК, (как насчет onfocus :) а в меню - либо отказаться, либо позиционировать тултип в строке со ссылкой, предварительно развинув с помощью line-height строку
5.akella | 15 Feb, 2006
2Ganges: Пожалуй ты прав, можно к :hover добавить еще и :focus или как там оно.. :) Но это уже мелочи. А с координатами нужно играться конечно у меня там неидеально вышло. Вот с календарем гораздо приятнее получилось, и без лишних движений. Наверно нужно больше в сторону сдвигать - в этом секрет успеха.
6.Tomaz | 15 Feb, 2006
В Опере 8.5 тултип ведет себя как-то странно: он не исчезает полностью, часть его остается видимой.
7.akella | 15 Feb, 2006
Нда, какой то странный глюк оперы :(. Он проявляется при одновременном использовании z-index и position:absolute; При убирании з-индекс глюк исчезает, но опять же приходится задавать position:relative для a.tt а не для a.tt:hover. И тут всплывают проблемы с ИЕ... Приходится хакать. Короче говоря надо выпустить ДВА варианта тултипов для разных ситуаций на странице. Странно что опера так странно себя ведет :(. Завтра сделаю апдейт.
8.Владимир Яшников | 15 Feb, 2006
Здесь можно найти ещё несколько интересных примеров.
9.uggallery | 17 Feb, 2006
Еще неприятный момент: на скриншоте. Курсор с левого края, тултип -- с правого, и не умещается на экране. Но простота -- это действительно, сила. Если правильно учесть ограниченность метода. Или сделать вариант с "немножко JavaScript". С точки зрения юзабилити, у меня один общий вопрос к любым нестандартным тултипам: насколько их использование вообще оправдано? Но это нужно решать в каждом конкретном случае, отдельно.
10.akella | 17 Feb, 2006
Да, спасибо, я и не ожидал. Пожалуй стоит обезопасивать большими отступами такие "обьекты" :). Спасибо еще раз.
11.доброход | 18 Feb, 2006
а не могли бы кинуть ссылку на "непростой" тултип? с кучей JS? Спасибо!
12.Dmitry | 18 Feb, 2006
Я тоже как-то занимался аналогичными подсказками http://borr.nm.ru/pub/xml/tocmenu.xml - здесь основной пример. А вообще весь сайт был сделан с упором на подобные подсказки. И еще - есть подозрение, что мой пример не работает в Ие и других сотоварищах, так как кроме mozilla я в глаза вообще никого не видел, зато у меня полупрозрачный фон и скругленные углы :) . Ваш пример должен быть более кросплатформенным.
13.akella | 19 Feb, 2006
2 доброход: Вот здесь - Всплывающая подсказка (tooltip) с использованием DOM - более сложный вариант. А так же не следует забывать о nicetitles (и на русском) 2 Dmitry: спасибо за интересный пример - это наверно наше кодерское будущее... :)
14.Double | 19 Feb, 2006
В Opera 8.5.1 глючит пример. Поэтому ниасилил (т.е. дальше читать не стал :)
15.CB | 20 Feb, 2006
Мой вариант: http://sudoku.org.ua/rus/blog/examples/tt/
16.akella | 20 Feb, 2006
Я собственно так и написал - что для оперы 8.51 нужен отдельный пример в силу корявости данного броузера в области position:absolute, он никак не может асилить данную простую технику. Как я и написал достаточно убрать z-index и все работает. Вобщем то Вам проще было написать ниасилил видимо ) чем все-таки асилить сей огромный пост. :) В любом случае - отличный коммент :)) Ну а во вторых глючит не везде... Потому я и написал что для разных случаев разную технику нужно использовать. Единственное решение которое я пока вижу - отдавать отдельный ЦСС для ВСЕХ бразуеров кроме Оперы - имхо слишком много чести - все же это не жизненно важный функционал, а прикольная фича - которую пускай видят только обладатели доработанных броузеров :P
17.akella | 20 Feb, 2006
По адресу http://cssing.org.ua/examples/csstooltip/index1.html - находится пример для оперы - пришлось пожертвовать отображением тултипов поверх других (тултипистых)ссылок на странице. Однако если важна поддержка и никак не уйти от оперы...
18.UGgallery &raquo; Tooltips | 20 Feb, 2006
[...] Tooltips 20 Фев. 2006 Простой тултип или всплывающая подсказка (от cssing) Без Javascript. Только HTML и CSS.[...]
19.(v) | 02 Mar, 2006
Жаваскрипт?! Да почему бы и нет, хватит жить в архаичном мире! http://www.dustindiaz.com/sweet-titles
20.akella | 02 Mar, 2006
Как по мне то каждый выбирает сам :) Не вижу ничего архаичного в неупотреблении джаваскрипта для таких простецких эффектов.
21.rodem | 10 Mar, 2006
http://www.bosrup.com/web/overlib/ Собственно использую аж с 2000-го года. 36 кб js - работает везде.
22.sazuke | 03 Apr, 2006
все здорово!! только хотел я это применить к выпадающему списку типа не проходит )) Разбираю css на примерах и спецификацию почитываю ) Может поможет кто ? p.s. Как предполагаю, нужно искать в направлении прописывания классов для
23.gordi | 10 Apr, 2006
Здесь не большое обсуждение: http://xpoint.ru/forums/internet/html_css/css/thread/36200.xhtml
24.Blog: Alter World | 18 Apr, 2006
[...] но себе на заметку возьму и выскажу одно замечание по рецепту Простой тултип или всплывающая подсказка – на мой взгляд там нужного результата можно было добиться проще, главное не забывать про DOM и onmouseover/onmouseout.[...]
25.pepelsbey | 06 May, 2006
Битая ссылка на Agat'a "К тому же можно вспомнить о поисковой оптимизации и использовать вот этот прием" Вот новая: http://agat.in/1/css-seo/
26.Aph1na | 22 Jun, 2006
Как-то давно прочитала, но только сегодня пришлось воспользоваться. Огромное спасибо, отличный пример.
27.links for 2006-09-28 | 28 Sep, 2006
[...] tember 28, 2006 links for 2006-09-28 Filed under: web andyb 6:23 am # cssing :: Архив :: Простой тултип или всплывающая подсказка (tags: webdev css) ° [...]
28.Alex | 25 Oct, 2006
Я думаю, самым корректным и для поисковиков, и для семантики, и для контент-менеджеров будет писать ссылке артибут title, использовать Ваш CSS, а потом javascript'ом для всех A в документе, у которых не пустой title, создать span и положить в него содержимое title'а. Скриптик на строк 6, я полагаю :)
29.akella | 26 Oct, 2006
У меня всегда была какая то легкая антипатия к подобным скриптам ) Я фанат простоты и прозрачности. Но отличная идея - это действительно было бы завершенное и правильное решение. Спасибо! уже не в этот пост но стоит на досуге таки сделать )
30.Alex | 30 Oct, 2006
Вот как - оказывается мне не идет мейл об ответе... Случайно заметил :) Именно как фанат простоты и прозрачности я испытываю огромную симпатию к таким маленьким, простым и прозрачным скриптам :) Могу написать. Надо будет собраться, да :))
31.Данила | 10 Aug, 2009
ну довольно весомо и ни везде работает, на мой взгляд намного проще можно сделать на js - например как здесь - http://neoprizma.net/2009/08/07/alt/
32.Angel7 | 09 Nov, 2007
Спасибо, пригодилось!
33.Ars | 06 Dec, 2007
И все таки цсс чудесен если не учитывать, что опера 8.х тупит, в 9.х все отлично. Долго искал подходящий способ тултипицо остановился на цсс варианте. Спасибо
34.Ars | 06 Dec, 2007
Хотя вру. Опера тупит :)
35.akella | 06 Dec, 2007
да, для нее второй вариант лучше, там без залипания =) Рад что техника вам помогла!
36.Андрей | 27 Mar, 2008
все работает что называется "чики-пики", т.е. без сучка и задоринки. спасибо автору за дельный совет
37.Михаил | 31 Mar, 2008
Параллельно с попап-титлом в опере выскакивает ее встроенный титл с ссылкой. Может я чего не понимаю, но такая лажа получается. На мой взгляд, лучше уж проверенным (title="...") методом, чем так.
38.akella | 31 Mar, 2008
Да, для этого гениального броузера лучше не делать попапы теперь. =)
39.Nick | 11 Apr, 2008
проблема с примером статьи - в файрфоксе Flash-объект ставится выше )= чего то не могу побороть
40.akella | 11 Apr, 2008
Для позиционирования поверх флеш обьектов нужно указывать им в ХТМЛ параметр wmode="transparent"
41.Сандро | 22 Apr, 2008
#links {position: absolute;} #links a {display: block; text-decoration: none;} #links a:hover {} #links a span {display:none;} #links a:hover span {display: block; position: absolute; width: 150px; color:#d2d2d2; background:#434343; padding:5px; border:1px solid #999999; margin:10px 0 0 -10px} HTML ул. Немецкого к...БЛА БЛА БЛА Что бы все это заработало в Опере просто уберите top:-10px и left:40px, а позиционируйте marginОМ и все ок!
42.Андрей | 30 Oct, 2011
Интересная статья! Кстати если кому интересно есть кросс-браузерный хороший способ на на http://sitemaker.x10.bz/articles.php?id=12