Всплывающие подсказки — html, JS, Bootstrap. Можно ли изменить вид всплывающей подсказки? Всплывающая подсказка при наведении javascript

Всплывающая подсказка представляет собой короткое текстовое сообщение с пояснением, возникающие в результате наведения курсора мышки на элемент страницы. Далее рассмотрим как сделать всплывающую подсказку в html.

Стандартный способ

За показ подсказки отвечает {title}. Этот атрибут можно использовать для показа подсказки к разным объектам, но чаще всего его используют в качестве поясняющего текста к изображениям.

Для показа всплывающей подсказки нужно только лишь добавить это атрибут и написать в нем необходимый поясняющий текст.

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

Поясняющий текст появляется не сразу после наведения мышки на изображение, а через пару секунд. Такая особенность всплывающих подсказок заложена по умолчанию.

Стандартная всплывающая html подсказка при наведении на текст имеет один существенный недостаток – отсутствие инструментов для стилизации. Чтобы решить эту проблему необходимо использовать другие способы создания всплывающей подсказки.

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

Для красивого вывода подсказки обычно используется именно этот способ. Он предусматривает заключение картинки в контейнер с идентификатором. Благодаря этому, обеспечивается возможность обращения к данному контейнеру в стилях:

В вышеуказанном примере единственным непонятным моментом может быть. Этот атрибут не выполняет никакой функции. Однако его значение используется в js и css. Таким образом, и этот атрибут может быть полезен. Но сначала необходимо описать стили блок-контейнера.

Относительное позиционирование используется по причине того, что контейнер со всплывающей подсказкой будет позиционироваться абсолютно. Поэтому необходимо сделать так, чтобы текст позиционировался только относительно родительского блока, а не всей страницы.

#pdskzk{ position: relative; display: inline-block; }

Блочно-строчное отображение не помешает родительскому блоку (в том числе и контейнеру с со всплывающей подсказкой) растянуться на всю ширину окна. Теперь осталось создать поясняющий текст.

Всплывающие подсказки в css проще всего делать посредством псевдоэлементов:

#pdskzk: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%; }

Несмотря на обилие кода, он очень прост для понимания. Селектор #pdskzk:hover:after необходим для создания псевдоэлемента after в тот момент, когда пользователь ставит курсор на контейнер с изображением. Свойство content: attr(data-name) предназначено для указания текстового значения. Оно соответствует свойству, которое записано в атрибуте data-name у контейнера-обертки изображения.

После этого остается позиционировать объект абсолютно и задать ему необходимые параметры:

  • Цвет;
  • Шрифт и т.д.

Таким образом, получается такая всплывающая подсказка css при наведении на картинку:


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

Плавное появление

Тем не менее, возможности css позволяют использовать плавное появление подсказки. В этом случае не используются псевдоэлементы. Это обусловлено тем, что именно они не позволяют применить опцию плавного появления. Пример реализации плавного появления всплывающей подсказки на css представлен ниже:

Текст подсказки

Стоит заметить, что css-код практически не изменился:

#pdskzk2{ position: relative; display: inline-block; } #pdskzk2 .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); } #pdskzk2:hover .text{ opacity: 1; }

Ключевое изменение касается свойства content, которое не используется в этом примере. Оно потеряло актуальность ввиду того, что поддерживается только псевдоэлементами. Еще одно изменение – появление свойства transition. Именно это свойство отвечает за создание плавных переходов. Внимательный читатель наверняка обратил внимание на значение opacity: 0. Оно делает контейнер с подсказкой прозрачным.

Теперь при наведении на родительский блок достаточно вернуть стандартную прозрачность контейнеру с подсказкой. После этого можно проверить работу кода и убедиться в том, что поясняющий текст возникает на экране плавно.

CSS3 позволяет скрыть элемент и другими способами. Например, может использоваться трансформация. Этот метод предусматривает замену полной прозрачности на свойство transform: scale(0). Также необходимо уменьшить размер контейнера до 0. Таким образом, его не будет видно на странице. При наведении на контейнер с изображением нужно указать свойство transform: scale(1). Этот способ позволяет сделать появление всплывающего текстового сообщения не только плавным, но и эффектным.

Другие способы

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

Доброго времени суток, любознательные подписчики и гости блога. Сегодня мы разберем с вами полезный раздел в прототипно-ориентированном сценарном языке, а именно событие при наведении мыши JavaScript.

Я хочу, чтобы вы хорошенько разобрались в таких событиях, как click, mouseup, mousedown, mouseover и других, поняли разницу между ними и научились их использовать для решения поставленных задач. Конечно же после каждого ключевого теоретического материала вы сможете найти программную реализацию примеров. Ну что ж, приступим!

Все сведенья о событиях мышки

Для мыши существует несколько событий, которые полностью охватывают всевозможные действия курсора на странице . Среди них есть те, которые срабатывают при нажатии на объект, наведении на него или движении указателя по открытому окну. Их все можно поделить на две группы: простые и комплексные (составные) события.

Начнем с простого

Для начала познакомимся с простыми событиями. Их всего пять. Для удобства я поместил описание каждого инструмента в таблицу, прикрепленную ниже.

Наименование Описание
mousedown Названный event вызывается, когда одна из кнопок мышки нажата, но пока еще не отпущена.
mouseup А этот срабатывает уже при отпускании зажатой ранее кнопочки.
mouseover Вызывается при наведении курсора на обрабатываемый объект.
mouseout Обрабатывает действие выхода курсора из области элемента.
mousemove Любое движение указателя над определенной областью вызывает текущее событие.

Ну а теперь для закрепления материала разберем пример. Я создал небольшую программку, в которой изменяются эмоции смайла при наведении и отведении курсора.

Наведите на изображение курсор мыши и оно изменится. А теперь отведите его в сторону и понаблюдайте за изменениями function ChangeOver(x) { x.src= "http://storage2.vsemayki.ru/images/0/0/514/514012/previews/sign_front_white_500.jpg"; }; function ChangeOut(x) { x.src= "http://storage2.vsemayki.ru/images/0/0/514/514102/previews/sign_front_white_500.jpg"; }

Пришло время группировки

Теперь давайте перейдем к комплексным видам. Каждый из таких событий включает в себя несколько простых. При этом все составные части комплексного события не срабатывают одновременно, а выстраиваются в очередь. Поэтому вы иногда могли наблюдать такую ситуацию, что при быстром кликанье по, к примеру, пунктам меню веб-сайта нажатия иногда не срабатывают.

Почему же так? Ответ достаточно прост.

Обработка событий происходит с какой-то максимально допустимой скоростью. И при этом не стоит забывать, что события обрабатываются по очереди. А значит при слишком быстром нажатии на разные элементы цепочка обработки может не выполниться полностью.

Итак, ниже перечислены составные события.

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

Для практического ознакомления с функционированием выше перечисленных событий я модифицировал предыдущее приложение. Проанализируйте результат моей работы.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Пример наведения указателя на элемент страницы

Пример наведения указателя на элемент страницы Нажмите на меня один раз и смайл улыбнется! А теперь нажмите на меня двойным кликом и смайл начнет двигаться! Если хочешь вернуться к начальному состоянию, то нажми на меня правой кнопкой! function Smile() { document.getElementById("pic").src= "http://storage2.vsemayki.ru/images/0/0/514/514012/previews/sign_front_white_500.jpg"; }; function Cry() { document.getElementById("pic").src= "http://storage2.vsemayki.ru/images/0/0/514/514102/previews/sign_front_white_500.jpg"; }; function Move() { document.getElementById("pic").src= "https://otvet.imgsmail.ru/download/197747824_e708b2123d2b2d745d271f15cb144dcc_800.gif"; };

Как видите, все очень просто. Данные элементы легко вызывать в коде и привязывать их к определенным действиям.

Tooltip (тултип) - всплывающая подсказка на html + javascript\jQuery

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

На самом деле реализация тултипов(tooltip) очень проста и не требует вмешательства каких-либо внешних плагинов, все намного проще. Элемент, к которому нужно выводить tooltip, необходимо отметить селектором и атрибутом, в котором будет находиться текст подсказки или даже html. При наведении на элемент текст подсказки будет размещен в блоке тултипа. Сам блок с помощью javascript/jQuery размещаем вблизи с исходным элементом. Остается только стилизовать tooltip.

Итак, приступим:

Размещаем html со следующим содержанием:

Супермен

Человек-паук

Железный человек

Халк

Стилизуем элементы и всплывающий тултип:

.tool-item{ /* элементы */ border-bottom: 1px dashed black; display button: inline-block; margin-right: 20px; cursor: pointer; } .tooltip-block{ /* тултип */ position: absolute; background: white; border: 1px solid rgb(230, 230, 230); padding: 5px 8px; font-size: 10px; width: 140px; line-height: 13px; color: rgb(82, 82, 82); z-index: 400; display button:none; }

Javascript/jQuery:

$(document).ready(function(){//страница загрузилась $(".tool-item").hover(function(){ //при наведении на элемент: var helptext = $(this).attr("data") //текст подсказки $(".tooltip-block").html(helptext).show(); //размещаем текст подсказки в блок тултипа и делаем его видимым //далее устанавливаем тултипу значения позиции с помощью абсолютного позиционирования: //позиция элемента сверху + высота элемента -> $(this).offset().top+$(this).height() //позиция элемента слева -> $(this).offset().left $(".tooltip-block").offset({top:$(this).offset().top+$(this).height(),left:$(this).offset().left}); },function(){ $(".tooltip-block").hide(); //скрываем тултип }); }); //в итоге подсказка окажется ровно под элементом наведения

Пример скрипта, который размещает tooltip справа от элемента наведения:

$(document).ready(function(){//страница загрузилась $(".tool-item").hover(function(){ //при наведении на элемент: var helptext = $(this).attr("data") //текст подсказки $(".tooltip-block").html(helptext).show(); //размещаем текст подсказки в блок тултипа и делаем его видимым //далее устанавливаем тултипу значения позиции с помощью абсолютного позиционирования: //позиция элемента сверху -> $(this).offset().top //позиция элемента слева -> $(this).offset().left+$(this).width()+5 $(this).offset().left$(".tooltip-block").offset({top:$(this).offset().top,left:$(this).offset().left+$(this).width()+5}); },function(){ $(".tooltip-block").hide(); //скрываем тултип }); }); //в итоге подсказка окажется справа от элемента наведения

Можно фантазировать над стилизацией тултипа: добавить уголок, придать тень, эффекты открытия блока и так далее. Например, на нашем сайте вы можете увидеть тултип на левой панели, работа основана на той же идее, которую мы рассмотрели в данной статье.

Speech Bubbles Tooltip позволяет добавлять всплывающие подсказки, текст которых содержится либо в атрибуте title ссылки, либо представлен в виде HTML текста в отдельном файле, который подгружается с помощью AJAX. Стиль вывода подсказок не использует никаких изображений, только приемы CSS.

Speech Bubbles Tooltip использует скругленные углы и тени CSS3. подсказки отлично выглядят в FF3+, Opera 9+, и Google Chrome/ Safari 4+. В IE7 и IE8 подсказки сохраняют свою функциональность без эффектов CSS3.

Использование. Шаг 1.

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

jQuery(function($){ //По наступлению события document.ready //Применяем подсказки для ссылок с классом "addspeech", а текст для подсказок будем искать в файле "speechdata.txt" $("a.addspeech").speechbubble({url:"speechdata.txt"}))

В данном коде используются три файла, которые можно найти в архиве со скриптом (speechbubbles.css , speechbubbles.js и speechdata.txt ). По умолчанию, они размещаются в том же каталоге, что и веб страница.

Шаг 2.

В HTML коде установить для ссылок с подсказками класс addspeech и значение атрибута rel, которое соответствует тексту нужной подсказки в файле speechdata.txt

Например, "Создание пользовательской панели опций в Wordpress".

По умолчанию скрипт устанавливает всплывающие подсказки для всех ссылок с классом addspeech . При инициализации скрипта устанавливается файл, из которого будут загружаться подсказки (смотри шаг 1).

Стиль вывода подсказок устанавливается с помощью CSS кода файла speechbubles.css .

Два способа задания текста подсказок

Существует два способа задания текста для подсказок:

Способ 1.

Текст подсказки устанавливается в качестве значения атрибута title ссылки с классом addspeech :

Текст ссылки

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

Способ 2.

Разметка подсказок подготавливается в другом файле (в примере это файл speechdata.txt ). Данный метод позволяет организовать централизованное хранение подсказок, что будет очень удобно при разработке растущего проекта.

Формат разметки подсказок следующий:

Пример подсказки №1. Пример подсказки №2. Выделяем часть текста. Пример подсказки №3. Пример подсказки №4.

Пример использования ссылки

В данном примере для подсказки будет использоваться текст элемента с id speechbubble1 из файла speechdata.txt .

Статью будет интересно прочитать как новичкам в работе с JavaScript, так и более или менее продвинутым в этом вопросе людям. Ее цель - ознакомление читателя с принципом работы JavaScript-подсказки. В конце статьи есть краткое описание всех объектов, событий и свойств, используемых в скрипте.

В начале ознакомления с HTML создается впечатление, что в нем всего достаточно, а где-то есть даже что-то лишнее. Но по мере накопления знаний и опыта начинают возникать вопросы, ответов на которые в учебниках нет. Один из таких вопросов звучит примерно так: "а как бы украсить всплывающую подсказку?".

Иногда возникают такие ситуации, что без всплывающей подсказки никак не обойтись, а стандартные alt и title не вписываются в дизайн сайта. Как раз в таких ситуациях спасают подсказки, написанные на JavaScript.

Итак, как реализуется такая подсказка?

Для на чала необходимо понять, что такое JavaScript-подсказка. А это всего навсего блок html-кода, который двигается за курсором мыши средствами JavaScript. Один из вариантов организации такого блока - использование тега . Например:

Параметр visibility установлен в hidden, т.к. изначально подсказка должна быть скрыта. Ширина этого блока 400 пикселей, а высота меняется в зависимости от содержимого и не меньше 10 пикселей. Также для визуального отделения подсказки от основного содержимого она обрамлена черной рамкой толщиной 1 пиксель.

Теперь нужно заставить подсказку появляться при наведении мыши на что-либо. Для примера она будет появляться и исчезать над картинкой:

То есть при наведении мыши на картинку будет вызвана функция movePic() со строковым параметром - текстом подсказки, - которая отобразит div-блок рядом с указателем мыши, а при удалении - hidePic(), которая спрячет его обратно.

function hidePic(){
//если чуть-чуть порыться в памяти или поднять глаза вверх, то можно понять, что myalt - имя блока.
myalt.style.visibility="hidden";//передача параметру visibility значения hidden, блок становится невидим
myalt.innerHTML="";//очищение содежимого блока
myalt.style.top=0;
myalt.style.left=0;//отправка блока в верхний левый угол экрана
}

//Теперь пришло время movePic():
function movePic(word){
myalt.innerHTML=word;//отправка в подсказку строки
myalt.style.left=window.event.clientX+5;
myalt.style.top=window.event.clientY+5;//блок находится на 5 пикселей правее и ниже курсора мыши
myalt.style.visibility="visible";//блок становится видимым
}

Этот вариант уже работает, но у него есть недостки:
- если документ прокручивающийся (как это обычно и бывает), то корректно подсказка будет работать только в верхрем положении экрана, так как clientX и clientY возвращают лишь относительные координаты мышки.
- если объект, над которым всплывает подсказка, расположен ближе к правому краю окна, то она вылезет за края экрана и страничка растянется.

Теперь пора исправлять недоделки. На самом деле все вышеперечисленные недостатки решаются очень легко:
- достаточно определить высоту прокрученной части документа
- проводится проверка на положение курсора относительно правого края.
- аналогично с нижним краем.

function movePic(word){
myalt.innerHTML=word;
_x=window.event.clientX;
_y=window.event.clientY;//сохранение координат курсора мыши в переменные
_dx=5;//смещение подскаки вправо и влево относительно координат мыши
//Определение, помещается ли подсказка между курсором и краями экрана
left=false;right=false;
if(_dx+_x+myalt.clientWidth>
if(_dx+_y+myalt.clientHeight>
//если объект в нижнем правом углу, подсказка всплывает над курсором
//помещение подсказки в найденные коородинаты
myalt.style.left=_x;
myalt.style.top=_y+document.body.scrollTop;//смещение подскази в зависимости от высоты прокрученной части документа
myalt.style.visibility="visible";

}

Обычно делают подсказку, двигающуюся за курсором мыши. Достигается это следующим образом. Во-первых функцию нужно вызывать не onmouseover, а onmousemove, и во-вторых, строка, передаваемая в функцию movePic(), должна отправляться в тело подсказки только один раз (иначе могут возникнуть разного рода блики и прочее, особенно если в подсказке будет картинка). Ниже следует целиком код документа.



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

var hide=true;//глобальная переменная, отвечающая будет ли строка передана в подсказку
function movePic(word){
_x=window.event.clientX;
_y=window.event.clientY;
_dx=5
left=false;right=false;
if(_dx+_x+myalt.clientWidth>document.body.clientWidth){_x=document.body.clientWidth-myalt.clientWidth-_dx;left=true;}
if(_dx+_y+myalt.clientHeight>document.body.clientHeight){_y=document.body.clientHeight-myalt.clientHeight-_dx;right=true;}
if(left&&right)_y=document.body.clientHeight-myalt.clientHeight-_dx*4;
myalt.style.left=_x;
myalt.style.top=_y+document.body.scrollTop;
if(hide){
myalt.innerHTML=word;
myalt.style.visibility="visible";
hide=false;
}
}
function hidePic(){
myalt.style.visibility="hidden";
myalt.innerHTML="";
myalt.style.top=0;
myalt.style.left=0;
hide=true;
}






Справка:
window - объект, окно браузера;
window.event - объект, информация о событиях;
document - объект, веб-страница;
document.body - объект, тело веб-страницы;
style - объект, доступ к стилям объекта;
clientX, clientY - read-only свойства event, координаты мыши относительно рабочей области браузера;
innerHTML - read/write свойство, возвращает/устанавливает html-код между тегами объекта;
clientWidth, clientHeight - readn-only свойства, возвращают реальные ширину и высоту объекта соответственно;
scrollTop - read/write свойство, возвращает/устанавливает высоту прокрученной части объекта;
onmouseout - событие, происходящее при наведение курсора мыши над объектом;
onmousemove - событие, происходящее при движении курсора мыши над объектом;
onmouseout - событие, происодящее в момент убирания курсора мыши с объекта.