Як робиться в html спливаюча підказка? Підказки на CSS Html, як спливаючі підказки

Від автора: привіт. Підказка - це невеликий пояснювальний текст, який з'являється при наведенні на якийсь елемент, зазвичай на картинку. Сьогодні ми подивимося, як можна зробити в html підказку різними способами.

Стандартна підказка

За умовчанням за виведення тексту, що пояснює, відповідає атрибут title. Його можна вказувати різним елементам, але зазвичай використовують лише картинок, щоб пояснити, що у них зображено.

В одній із минулих статей я використав зображення тигра, щоб показати роботу з розмірами картинки. Якщо ви не проти, я знову використовую це зображення. Отже, для виведення підказки необхідно лише додати атрибут title і в ньому написати потрібний текст.

< img src = "tiger.jpg" title = "Це тигр" >

Там може бути як одне слово, так і кілька речень. І ось так це виглядає:

Підказка з'являється плавно, не відразу після наведення, а згодом. Це поведінка, закладена за умовчанням.

Основна проблема такої підказки її неможливо стилізувати. Як вирішувати цю проблему? Доведеться підказувати іншими способами. Зараз покажу вам парочку.

Спосіб на чистому css

Дуже цікавий спосіб, який дозволяє гарно вивести підказку для зображення. Html-розмітка проста, тільки зображення потрібно укласти в блок-контейнер, якому повісимо ідентифікатор, щоб пізніше звернутися до нього в стилях:

< div id = "tiger" data - name = "Суматранский тигр" > < img src = "tiger.jpg" > < / div >

Незрозумілим вам тут може бути лише атрибут data-name. Справа в тому, що це так званий data-атрибут, який сам по собі нічого не робить, але його значення можна використовувати в css і JavaScript, що робить його корисним у деяких випадках. Далі ви побачите це.

Отже, спочатку опишемо стилі для контейнера. Відносне позиціонування потрібне нам тому, що ми будемо позиціонувати абсолютно блок з текстом, що пояснює, щоб позиціонування відбувалося щодо батьківського блоку, а не всієї сторінки.

#tiger(position: relative; display: inline-block; )

#tiger(

position: relative;

display: inline-block;

Блочно-рядкове відображення перешкодить блоку (а разом з ним і блоку з підказкою, якою ми створимо) розтягнутися на всю ширину вікна. Залишилося створити саму підказку. У css це дуже зручно робити за допомогою псевдоелементів. Ось так:

#tiger:hover:after (content: attr(data-name); position: absolute; left: 0; bottom: 0; background: rgba(5,13,156,.55); color: #fff; text-align: center font-family: cursive; font-size: 14px; padding: 3px 0; width: 100%;

#tiger:hover:after (

content: attr (data-name);

position: absolute;

left: 0;

bottom: 0;

background: rgba (5, 13, 156,. 55);

color: #fff;

text-align: center;

font-family: cursive;

font-size: 14px;

padding: 3px 0;

width: 100%;

Кода багато, але нічого складного тут нема. Селектор #tiger:hover:after означає наступне: коли ми наводимо курсор на блок з картинкою, потрібно створити псевдоелемент after (і далі у фігурних дужках перераховуються правила). Властивість content: attr(data-name) задає текстове значення блоку. Воно дорівнюватиме тому, що записано в атрибуті data-name у блоку-обгортки картинки.

Ця підказка з'являється при наведенні на картинку, але на відміну від стандартної вона робить це різко, а сама поява відбувається безпосередньо в момент наведення. Плавна поява в цьому випадку реалізувати не вийде, тому що для псевдоелементів плавні переходи не підтримуються.

Спосіб 2. Чистий css та плавна поява

Втім, зовсім небагато переписавши код можна домогтися плавної появи підказки, причому, знову ж таки, не використовуючи JavaScript.

Щоб самостійно побачити два ефекти, які я покажу вам далі, я рекомендую відкрити блокнот або будь-який зручний редактор коду і повторювати все за мною. Правда для цього ще потрібно підключити стильовий файл, хоча стилі можна писати і в HTML у тегах

Отже, код цього прикладу трохи відрізнятиметься, і це з тієї причини, що ми не будемо використовувати псевдоелемент. Саме через нього неможливо було застосувати плавні зміни. На цей раз код виглядатиме так:

Суматранський тигр

< div id = "tiger2" >

< img src = "tiger.jpg" >

< div class = "text" >Суматранський тигр< / div >

< / div >

CSS код не зазнав якихось величезних змін:

#tiger2( position: relative; display: inline-block; ) #tiger2 .text ( transition: all 0.6s; opacity: 0; position: absolute; left: 0; bottom: 0; background: rgba(5,13,156,.). 55); color: #fff;text-align: center; font-family: cursive; font-size: 14px; padding: 3px 0; width: 100%; transform: scale(0); ) #tiger2:hover .text ( opacity: 1; )

#tiger2(

position: relative;

display: inline-block;

#tiger2 .text (

transition: all 0.6s;

transform: scale (0);

#tiger2:hover .text(

opacity: 1;

Забираємо тільки властивість вмісту, оскільки воно підтримується лише псевдоелементами. Дописуємо властивість transition, яка створює плавні переходи станів. Ну а opacity: 0 дасть нашому блоку з підказкою повну прозорість, тому його не буде видно на сторінці.

При наведенні на блок тепер достатньо повернути нормальну прозорість з підказкою. Готово. Можете перевірити, чи елемент з'являється плавно.

За допомогою CSS3 можна приховати елемент і по-іншому. За допомогою трансформацій, наприклад. Замініть повну прозорість на таку властивість: transform: scale(0) і розмір блоку буде зменшений до нульового, так що його просто не буде на екрані. При наведенні на блок з картинкою слід повернути нормальний розмір ось так: transform: scale(1). У такому разі ефект появи виглядатиме ще красивіше. Можете переконатися у цьому самі.

Як бачите, на css підказка також може з'являтися повільно з красивими ефектами.

Інші способи

Більше можливостей вам може дати jQuery. За допомогою цієї бібліотеки можна написати код для виведення підказки як самостійно, так і знайти якусь плагін, яка вже реалізує цю справу.

Наприклад, у фреймворку Bootstrap теж є багато готових компонентів і один з них, це якраз підказки. Ви можете подивитися в документації до фреймворку приклади коду, які дозволяють створити ці підказки, і використовувати їх. Необов'язково підключати весь Bootstrap, можна взагалі залишити лише такий компонент, як підказки (toolptips), завантажити та підключити лише його.

Загалом сьогодні я показав вам способи на css, як зробити красиву підказку з різкою і плавною появою, крім цього у вашому арсеналі є Bootstrap і jQuery. Вибирайте будь-що та реалізовуйте цікаві та красиві підказки на своїх сайтах!

Влад Мержевич

HTML вже має глобальний атрибут title , який можна додати до будь-якого елемента веб-сторінки. Наявність цього атрибута додає підказку, яка з'являється при наведенні курсору миші на елемент. Шрифт тексту, розмір підказки та її вигляд загалом залежить від операційної системи і може бути змінено з допомогою стилів. До того ж, багатьох розробників не влаштовує, що така підказка досить швидко зникає. Це змушує шукати способи зробити свою підказку, яка була б оформлена бажаним чином. Звичайно, найуніверсальніший спосіб полягає, але в деяких випадках цілком достатньо обійтися і одним CSS.

Як приклад я вибрав фотографії, при наведенні на них курсору миші відображається назва фотографії. Сам висновок тексту робитимемо з допомогою властивості content і брати значення тексту з будь-якого атрибута через attr() . На жаль, content не буде працювати бажаним чином у поєднанні з img , тому фотографії вставляються в елемент , до якого додаємо атрибут data-title з текстом підказки. Є спокуса вставити атрибут title і задіяти його, але в такому разі виводитиметься одночасно дві підказки: одна «рідна», а друга наша. Так що ми використовуємо свій власний атрибут data-title, благо HTML5 дозволяє це робити. Таким чином, отримаємо наступний код (приклад 1).

Приклад 1. Код HTML

HTML5 IE Cr Op Sa Fx

Підказка, що спливає на CSS

Переходимо до стилю нашої підказки. Спершу треба зробити, щоб вона взагалі з'являлася. Для цього скористаємося псевдоелементом :: after, до якого додаємо content: attr (data-title).

Photo::after ( content: attr(data-title); )

Вийде, що після вмісту елемента з класом photo виводитиметься текст з атрибуту data-title , що нам потрібно. Але оскільки підказка повинна з'являтися тільки при наведенні на фотографію курсора миші, додамо ще псевдоклас :hover .

Photo:hover::after ( content: attr(data-title); )

Залишається тільки встановити бажаний стиль нашої підказки, зокрема, положення, колір фону, тексту, рамку та ін. (Приклад 2).

Приклад 2. Стиль підказки

HTML5 CSS3 IE Cr Op Sa Fx

Підказка на CSS .photo ( display: inline-block; /* Рядково-блоковий елемент */ position: relative; /* Відносне позиціонування */ ) .photo:hover::after ( content: attr(data-title); / * Виводимо текст */ position: absolute; /* Абсолютне позиціонування */ left: 20%; top: 30%; /* Положення підказки */ z-index: 1; 255,255,230,0.9);/* Напівпрозорий колір фону */ font-family: Arial, sans-serif; / border: 1px solid #333; /* Параметри рамки */ )

Результат цього прикладу показано на рис. 1.

Мал. 1. Вигляд спливаючої підказки

Положення підказки не залежить від позиції курсору, вона з'являється в тому самому місці при наведенні курсору на зображення. Можна зробити, щоб підказка виводилася в нижній частині фотографії, так вона не закриватиме велику частину картинки. Стиль у своїй зміниться незначно (приклад 3).

Приклад 3. Виведення підказки знизу фотографії

HTML5 CSS3 IE Cr Op Sa Fx

Підказка на CSS .photo ( display: inline-block; /* Рядково-блоковий елемент */ position: relative; /* Відносне позиціонування */ ) .photo:hover::after ( content: attr(data-title); / * Виводимо текст */ position: absolute;/* Абсолютне позиціонування */ left: 0; right: 0; bottom: 5px; rgba(0,42,167,0.6);/* Напівпрозорий колір фону */ color: #fff; /* Колір тексту */ text-align: center; /* Гарнітура шрифту */ font-size: 11px; /* Розмір тексту підказки */ padding: 5px 10px;

Результат цього прикладу показано на рис. 2.

Мал. 2. Вигляд спливаючої підказки

На жаль, властивість transition, за допомогою якого можна зробити анімацію підказки, не працює із псевдоелементами. Тому доведеться задовольнятися різкою появою нашої підказки. Також не буде жодного ефекту в браузері IE8 і молодше, ця версія не підтримує :: after. Втім, якщо замінити цей псевдоелемент на after, то можна отримати більш-менш працюючий варіант.

Гуру верстки навряд чи знайдуть у цьому пості щось нове собі. Цей пост скоріше для верстальників-початківців у яких, як і в мене, були проблеми зі створенням і стилізацією універсальних підказок.

Нещодавно, коли я робив невеликий блог, переді мною постало завдання зробити стильні, але водночас прості підказки. Спробувавши різні способи створення окремих div-контейнерів для підказок, або створення підказок на чистому CSS, я знайшов універсальне рішення, яке не буде захаращувати код, буде кроссбраузерним, і в той же час буде дуже простим для реалізації.
Усіх, кого зацікавив мій спосіб вирішення цього простого завдання, прошу під кат.

Рішення Спосіб, який я вам запропоную, досить простий та ефективний. Працює у всіх браузерах, навіть у ІЕ 6 (Багаторазово тестовано мною). Легко змінний і зручний. Не захаращує код і робить його наочним. Його можна легко змінити на свої потреби. Наприклад, зробити затримку виведення підказки через setTimeout або інше.HTML Припустимо у нас є HTML-сторінка з посиланням, при наведенні на яку нам потрібно вивести підказку:
Підказки Посилання
Як ви вже могли помітити з лістингу, я використовую css-препроцесор LESS.
Ми підключили до окремих файлів CSS-стилі та скрипти. Ще у нас є одне посилання та блок div, який і буде контейнером для підказки.
Специфікація HTML5 дозволяє використовувати атрибути типу data-atribute, в яких можна зберігати деяку інформацію про елемент або блок. Саме в data-атрибутах ми зберігатимемо текст підказок.
Посилання
Для зберігання я використовую атрибут data-tooltip.
C HTML закінчили - можна перейти до стилів.CSS Я використовую бібліотеку LESS Elements і всім раджу, тому деякі властивості я напишу з використанням цього фреймворку.
@import "css/elements.less"; #tooltip ( z-index: 9999; position: absolute; display: none; top:0px; left:0px; background-color: #000; padding: 5px 10px 5px 10px; rounded(5px);
З лістингу зрозуміло, що у першому рядку ми підключаємо LE, задаємо блоку div#tooltip абсолютне позиціонування і приховуємо його. Далі ми задаємо блоку фоновий колір і колір тексту, робимо заокруглення куточки (5px) і встановлюємо значення прозорості на 50%. Ну а тепер найцікавіше - jQuery.
$.jQuery(document).ready(function() ( $("").mousemove(function (eventObject)) ( $data_tooltip = $(this).attr("data-tooltip"); $("#tooltip") .text($data_tooltip) .css(( "top" : eventObject.pageY + 5, "left" : eventObject.pageX + 5 )) .show(); )).mouseout(function () ( $("#tooltip ").hide() .text("") .css(( "top" : 0, "left" : 0 )); )); )); // Ready end.
Тепер ми додаємо у вибірку всі елементи з атрибутом data-tooltip і при наведенні на потрібний елемент мишею отримуємо значення підказки та зберігаємо його у змінній. Далі додаємо текст підказки до блоку #tooltip, задаємо йому координати курсору від краю станиці + 5 px і нарешті виводимо блок із підказкою в потрібному місці. Після відходу миші з елемента ми ховаємо блок #tooltip, чистимо його вміст і повертаємо до 0;0;.

От і все!
У результаті ми отримаємо щось таке: Демо

Завдяки такому простому скрипту всі елементи на сторінці, які мають атрибут data-tooltip, отримають підказку.

Дякую за увагу!

HTML підказка — це блок із додатковою інформацією, який з'являється при наведенні курсору миші на певний елемент веб-сторінки. Сьогодні ми створимо власну підказку за допомогою HTML і CSS :

Подивитись демо-версію | Завантажити вихідний код

Ми можемо використовувати CSS підказки для більшості елементів, таких як посилання, теги, стилізований текст і т.д. Нам потрібно буде застосувати до елемента кілька класів і додати атрибут data- з текстом підказки.

Налаштування документа

Нам потрібно створити HTML-документ та задати вихідну розмітку:

Tooltips Demo // контент

Я додав посилання на Normalize.css , яка допомагає скинути всі стилі браузера за промовчанням, і гарантує, що кожен елемент виглядатиме однаково у всіх браузерах. На відміну від стандартного скидання, CSS Normalize.css не видаляє всі стилі за промовчанням, так що вам не потрібно буде переписувати стиль кожного елемента з нуля.

Я створив div з класом container, в який ми помістимо основні приклади підказок HTML. Ось стилі для body та класу .container :

body ( font-family: "Work Sans", sans-serif; font-size: 1.5em; line-height: 1.4em; font-weight: 700; background-color: #28ABE3; color: #fff; ) .container ( width: 800px; margin: 100px auto; background: radial-gradient( circle farthest-corner at 400px 250px , #64BBE0 0%, #28ABE3, #28ABE3 95%); )

Я відцентрував div контейнер, надавши для margin-left та margin-right значення auto . Також додав кілька стилів для розділу body, щоб він виглядав краще.

Я вирішив додати для фону невеликий світлий CSS-градієнт. Якщо браузер не підтримує CSS-градієнти (це стосується в основному IE 8 і 9), колір фону буде перемикається назад на синій за промовчанням (колір фону розділу body).

Я буду використовувати підказки HTML при наведенні з тегами анкорів, але ви можете призначити класи інших вбудованих елементів, таких як strong tag або span . Нижче наведено вміст контейнера div: