Всплывающая подсказка на CSS
Рассмотрим реализацию простой текстовой подсказки, всплывающей при наведении мыши на элемент. Особенностью способа является использование только CSS стилей, без JavaScript кода.
HTML разметка:
<button data-hint="Ваша подсказка">Наведите курсор на кнопку</button>
Для элемента, над которым требуется вывести всплывающую подсказку, добавляем атрибут «data-hint». Он должен содержать простую текстовую строку. Использование html тегов недопустимо.
CSS стили:
[data-hint] {
position: relative;
cursor: hint;
}
[data-hint]::after {
opacity: 0;
width: max-content;
color: #FFFFFF;
background-color: rgba(0,0,0,.7);
border-radius: 6px;
padding: 10px;
content: attr(data-hint);
font-size: 12px;
font-weight: 400;
line-height: 1em;
position: absolute;
top: -5px;
left: 50%;
transform: translate(-50%, -100%);
pointer-events: none;
transition: opacity 0.2s;
}
[data-hint]:hover::after {
opacity: 1;
}
Для элементов с атрибутом «data-hint» устанавливаем относительное позиционирование и создаём псевдоэлемент «after». Он будет иметь абсолютное позиционирование и содержимое текстовой подсказки.
Разбор стилей:
- opacity: 0 — устанавливаем полную прозрачность;
- width: max-content — ширина вычисляется в зависимости от содержимого;
- transform: translate(-50%, -100%) — центрирование подсказки по горизонтали над основным элементом;
- pointer-events: none — отключаем события мыши над псевдоэлементом;
- transition: opacity 0.2s — плавное изменение прозрачности;
Позиционирование
Для подсказки справа добавляем элементу класс «hint-right»:
.hint-right::after {
top: 50%;
left: auto;
right: -5px;
transform: translate(100%, -50%);
}
Для позиционирования слева добавляем класс «hint-left»:
.hint-left::after {
top: 50%;
left: -5px;
transform: translate(-100%, -50%);
}
Аналогично вывод снизу «hint-bottom»:
.hint-bottom::after {
top: auto;
bottom: -5px;
transform: translate(-50%, 100%);
}
В примерах используется небольшой отступ «-5px» от основного элемента. В некоторых случаях его можно установить равным нулю.
Кроме предложенного способа можете воспользоваться готовой миниатюрной css библиотекой «Hint.css». Она предлагает аналогичное решение, но в другом оформлении.
Плавное изменение высоты блока на CSS
Набор анимированных svg-preloader иконок
Вставляем знак рубля на сайте
Оформление placeholder с помощью CSS стилей
Два фона у элемента на css