Как добавить подсказку к элементу span?

365

В следующем коде я хочу всплывающую подсказку, когда пользователь наводит курсор на диапазон, как мне это сделать? Я не хочу использовать какие-либо ссылки.

<span> text </span>
MichaelICE
источник

Ответы:

678

Вот простой, встроенный способ:

<span title="My tip">text</span>

Это дает вам простые текстовые подсказки. Если вам нужны расширенные всплывающие подсказки с форматированным HTML-кодом, для этого вам потребуется библиотека. К счастью, есть множество таких .

RichieHindle
источник
1
Но работает ли это, если в промежутке нет текста? Скажем, например, пустой диапазон с bg-изображением?
Augiwan
1
@UGS: Вы уверены, что ваш элемент имеет размер, который вы думаете, что это? Попробуйте придать ему розовый фон, как у меня. :-)
RichieHindle
Большое спасибо.! Но я просто использовал tipsy.js, и он выглядит лучше, чем я хотел. : D И эта статья помогала в моем замешательстве: htmlgoodies.com/tutorials/html_401/article.php/3479661/... , где он говорит , что подсказка работает для «текст»
Augiwan
1
Привет, Может кто-нибудь уточнить, является ли это стандартом в некоторых / всех HTML-вкус?
Джонатан душ Сантуш
@jonathan: это стандарт, по крайней мере, с HTML4: w3.org/TR/html4/struct/global.html#adef-title
RichieHindle
97

Пользовательские подсказки с чистым CSS - JavaScript не требуется:

Пример здесь (с кодом) / Пример полного экрана

В качестве альтернативы titleвсплывающим подсказкам атрибутов по умолчанию вы можете создавать свои собственные настраиваемые всплывающие подсказки CSS, используя :before/ :after псевдоэлементы и data-*атрибуты HTML5 .

Используя предоставленный CSS, вы можете добавить всплывающую подсказку к элементу, используя data-tooltipатрибут.

Вы также можете контролировать положение пользовательской подсказки, используя data-tooltip-positionатрибут (допустимые значения: top/ right/ bottom/ left).

Например, следующее добавит панель инструментов, расположенную в нижней части элемента span.

<span data-tooltip="Custom tooltip text." data-tooltip-position="bottom">Custom bottom tooltip.</span>

введите описание изображения здесь

Как это работает?

Вы можете отобразить пользовательские всплывающие подсказки с псевдоэлементами, получив значения пользовательских атрибутов с помощью attr()функции.

[data-tooltip]:before {
    content: attr(data-tooltip);
}

С точки зрения позиционирования подсказки, просто используйте селектор атрибута и измените размещение в зависимости от значения атрибута.

Пример здесь (с кодом) / Пример полного экрана

Полный CSS-код, используемый в примере - настройте его под свои нужды.

[data-tooltip] {
    display: inline-block;
    position: relative;
    cursor: help;
    padding: 4px;
}
/* Tooltip styling */
[data-tooltip]:before {
    content: attr(data-tooltip);
    display: none;
    position: absolute;
    background: #000;
    color: #fff;
    padding: 4px 8px;
    font-size: 14px;
    line-height: 1.4;
    min-width: 100px;
    text-align: center;
    border-radius: 4px;
}
/* Dynamic horizontal centering */
[data-tooltip-position="top"]:before,
[data-tooltip-position="bottom"]:before {
    left: 50%;
    -ms-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}
/* Dynamic vertical centering */
[data-tooltip-position="right"]:before,
[data-tooltip-position="left"]:before {
    top: 50%;
    -ms-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}
[data-tooltip-position="top"]:before {
    bottom: 100%;
    margin-bottom: 6px;
}
[data-tooltip-position="right"]:before {
    left: 100%;
    margin-left: 6px;
}
[data-tooltip-position="bottom"]:before {
    top: 100%;
    margin-top: 6px;
}
[data-tooltip-position="left"]:before {
    right: 100%;
    margin-right: 6px;
}

/* Tooltip arrow styling/placement */
[data-tooltip]:after {
    content: '';
    display: none;
    position: absolute;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
}
/* Dynamic horizontal centering for the tooltip */
[data-tooltip-position="top"]:after,
[data-tooltip-position="bottom"]:after {
    left: 50%;
    margin-left: -6px;
}
/* Dynamic vertical centering for the tooltip */
[data-tooltip-position="right"]:after,
[data-tooltip-position="left"]:after {
    top: 50%;
    margin-top: -6px;
}
[data-tooltip-position="top"]:after {
    bottom: 100%;
    border-width: 6px 6px 0;
    border-top-color: #000;
}
[data-tooltip-position="right"]:after {
    left: 100%;
    border-width: 6px 6px 6px 0;
    border-right-color: #000;
}
[data-tooltip-position="bottom"]:after {
    top: 100%;
    border-width: 0 6px 6px;
    border-bottom-color: #000;
}
[data-tooltip-position="left"]:after {
    right: 100%;
    border-width: 6px 0 6px 6px;
    border-left-color: #000;
}
/* Show the tooltip when hovering */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
    display: block;
    z-index: 50;
}
Джош Крозье
источник
2
@SearchForKnowledge Действительно? Я посмотрю на это в какой-то момент. Спасибо.
Джош Крозье
5
Да, я только что проверил это и также не удивился, что это не сработало. Старый добрый IE! ;)
SearchForKnowledge
@JoshCrozier это очень помогло
JIBIN BJ
20

В большинстве браузеров атрибут title отображается как всплывающая подсказка и обычно гибок в отношении того, с какими элементами он будет работать.

<span title="This will show as a tooltip">Mouse over for a tooltip!</span>
<a href="http://www.stackoverflow.com" title="Link to stackoverflow.com">stackoverflow.com</a>
<img src="something.png" alt="Something" title="Something">

Все они будут отображать подсказки в большинстве браузеров.

Брайан Арнольд Синклер
источник
7

Для основной подсказки вы хотите:

<span title="This is my tooltip"> Hover on me to see tooltip! </span>

АБК
источник
4

этот "title"атрибут будет использоваться браузером как текст для всплывающей подсказки, если вы хотите применить к нему стиль, рассмотрите возможность использования некоторых плагинов

Rony
источник