Добавление всплывающего текста без JavaScript: CSS решения

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для создания простого всплывающего окна с текстом, необходимо добавить в HTML атрибут title:

HTML
Скопировать код
<span title="Рейтинг: 1500">Пользователь</span>

Чтобы создать пользовательскую подсказку, следует использовать в CSS псевдоэлемент ::after:

CSS
Скопировать код
.user-rep::after {
  content: attr(data-rep);
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s;
}
.user-rep:hover::after {
  visibility: visible;
  opacity: 1;
}
HTML
Скопировать код
<span class="user-rep" data-rep="Рейтинг: 1500">Пользователь</span>

Здесь функция attr() в CSS извлекает текст для подсказки из атрибута data-rep и отображает его, когда пользователь наводит курсор.

Кинга Идем в IT: пошаговый план для смены профессии

Настройка расположения подсказки

Для корректного расположения всплывающего текста используется CSS:

CSS
Скопировать код
.tooltip {
  position: relative;
  display: inline-block;
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 120px;
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-left: -60px;
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}
HTML
Скопировать код
<div class="tooltip">Наведите на меня
  <span class="tooltiptext">Текст подсказки</span>
</div>

Визуально привлекательные подсказки с семантикой HTML

Чтобы повысить важность контента, используйте тег <abbr> для сокращений с автоматической подсказкой:

HTML
Скопировать код
<abbr title="Язык разметки гипертекста">HTML</abbr>

Кастомное оформление: CSS, добавляющий индивидуальность подсказкам

Вы можете придать подсказкам уникальные цвета, отличающиеся от стандартной черно-белой палитры:

CSS
Скопировать код
.tooltip .tooltiptext {
  background-color: #f2f2f2;
  color: #2a2a2a;
}

Примечание

Воспринимайте подсказки как стикеры с заметками, которые всплывают при наведении курсора:

HTML
Скопировать код
<a href="#" title="Здесь важная информация!">🔗 Наведите на меня!</a>

При наведении:

Markdown
Скопировать код
До:            [🔗]
При наведении: [🔗💬]

В этом случае атрибут title 🏷️ предоставляет полезный сниппет информации без единой строчки JavaScript! 🚀

Завершение

Обеспечение доступности

Скрин-ридеры могут не воспринимать текст из атрибута title. Для передачи критически важной информации используйте aria-label:

HTML
Скопировать код
<button aria-label="Удалить сообщение" title="Удалить">
  <img src="delete-icon.png" alt="">
</button>

Многострочные подсказки

Если для подсказки требуется несколько строк, используйте переносы в CSS:

CSS
Скопировать код
.tooltip .tooltiptext {
  white-space: pre-line;
}
HTML
Скопировать код
<span class="tooltiptext">
  Узнайте подробности здесь! \A Важное уведомление на второй строке!
</span>

Решение для избежания обрезания подсказки

Если подсказка обрезается по краям окна, сделайте ее видимой всегда:

CSS
Скопировать код
.tooltip .tooltiptext {
  overflow: visible;
}

Интерактивные подсказки

Даже без JavaScript можно сделать подсказки интерактивными, применив в CSS псевдокласс :active:

CSS
Скопировать код
.tooltip:active .tooltiptext {
  visibility: visible;
  opacity: 1;
}

Полезные материалы

  1. CSS Tooltip – Как создать подсказки с применением только CSS и HTML.
  2. Псевдоэлементы – CSS: Каскадные таблицы стилей | MDN – Полная информация про псевдоэлементы в CSS.
  3. Селектор CSS :hover – Сведения о селекторе :hover в CSS.
  4. Тег HTML abbr – Использование тега <abbr>, вызывающего подсказки, в HTML.
  5. Глобальный атрибут title в HTML – Подробное руководство по атрибуту title для разработчиков, желающих добавить текст при наведении.
  6. Последние вопросы 'tooltip+html+css' – Stack Overflow — Актуальные вопросы о создании подсказок с использованием HTML и CSS на Stack Overflow.