Всплывающая подсказка на JQuery и CSS

Всплывающая подсказка на JQuery и CSS

1 июня 2013 • 365psd
Всплывающая подсказка на JQuery и CSS
Пример всплывающей подсказки (ToolTip), выполненный с помощью библиотеки JQuery и CSS.
Источник: osvaldas.info

Всплывающая подсказка является отличным изобретениеми, и, несомненно, добавляет значительное удобство для пользователей сайта. Как правило, подсказки содержат в себе небольшой пояснительный текст либо краткое описание какого-либо определения. По словам разработчиков, данный скрипт обладает следующими особенностями:
  • Приспосабливаемость к ширине и высоте. Он принимает положение в зависимости от ширины и высоты объекта и растянется хоть во весь экран, если это необходимо.
  • Совместим с мобильными устройствами.
  • Легко изменяемый и настраиваемый HTML - код.

Итак, все, что нужно сделать - вставить в вашу таблицу стилей нижеприведенный код CSS, отвечающий непосредственно за внешний вид всплывающего окна, подключить библиотеку JQuery и вставить на страницу, или подключить внешним файлом код JavaScript.
Слово или предложение, к которому надо сделать подсказку, необходимо заключить в ссылку с якорем "#" и присвоить атрибут rel="tooltip", либо заключить в тег с присвоением того же атрибута rel="tooltip".
В обоих случаях содержание атрибута "title" и будет содержанием подсказки.

Вот как это должно выглядеть:
<a rel="tooltip" title="Это текст всплывающей подсказки" href="#">текст</a>
<abbr rel=
"tooltip" title="Это текст всплывающей подсказки">текст</abbr>

CSS

#tooltip
{
    text-align: center;
    color: #fff;
    background: #111;
    position: absolute;
    z-index: 100;
    padding: 15px;
}
 
    #tooltip:after /* triangle decoration */
    {
        width: 0;
        height: 0;
        border-left: 10px solid transparent;
        border-right: 10px solid transparent;
        border-top: 10px solid #111;
        content: '';
        position: absolute;
        left: 50%;
        bottom: -10px;
        margin-left: -10px;
    }
 
        #tooltip.top:after
        {
            border-top-color: transparent;
            border-bottom: 10px solid #111;
            top: -20px;
            bottom: auto;
        }
 
        #tooltip.left:after
        {
            left: 10px;
            margin: 0;
        }
 
        #tooltip.right:after
        {
            right: 10px;
            left: auto;
            margin: 0;
        }


JavaScript

$( document ).ready( function()
{
    var targets = $( '[rel~=tooltip]' ),
        target  = false,
        tooltip = false,
        title   = false;
 
    targets.bind( 'mouseenter', function()
    {
        target  = $( this );
        tip     = target.attr( 'title' );
        tooltip = $( '
' ); if( !tip || tip == '' ) return false; target.removeAttr( 'title' ); tooltip.css( 'opacity', 0 ) .html( tip ) .appendTo( 'body' ); var init_tooltip = function() { if( $( window ).width() < tooltip.outerWidth() * 1.5 ) tooltip.css( 'max-width', $( window ).width() / 2 ); else tooltip.css( 'max-width', 340 ); var pos_left = target.offset().left + ( target.outerWidth() / 2 ) - ( tooltip.outerWidth() / 2 ), pos_top = target.offset().top - tooltip.outerHeight() - 20; if( pos_left < 0 ) { pos_left = target.offset().left + target.outerWidth() / 2 - 20; tooltip.addClass( 'left' ); } else tooltip.removeClass( 'left' ); if( pos_left + tooltip.outerWidth() > $( window ).width() ) { pos_left = target.offset().left - tooltip.outerWidth() + target.outerWidth() / 2 + 20; tooltip.addClass( 'right' ); } else tooltip.removeClass( 'right' ); if( pos_top < 0 ) { var pos_top = target.offset().top + target.outerHeight(); tooltip.addClass( 'top' ); } else tooltip.removeClass( 'top' ); tooltip.css( { left: pos_left, top: pos_top } ) .animate( { top: '+=10', opacity: 1 }, 50 ); }; init_tooltip(); $( window ).resize( init_tooltip ); var remove_tooltip = function() { tooltip.animate( { top: '-=10', opacity: 0 }, 50, function() { $( this ).remove(); }); target.attr( 'title', tip ); }; target.bind( 'mouseleave', remove_tooltip ); tooltip.bind( 'click', remove_tooltip ); }); });
Рейтинг: +2 Голосов: 2

Комментарии (6)

Михаил 16 октября 2014 в 20:27

А! Не получается у меня, помогите, пожалуйста. Чувствую, что делаю, что-то не то.

Ответить
Михаил 17 октября 2014 в 19:43

Все. Я все понял: сделал много ошибок я, но почему-то подсказка всплывает только один раз.

Ответить
Просто я 23 ноября 2014 в 13:33

Просто в цикл ее поставь. Без цикла она у тебя будет только раз всплывать.

Ответить
Антон 14 января 2015 в 04:34

Доброе утро. Поставил всё как положено. подключил скрипт. Но не хочет работать. Работает только стандартное всплывающее окно. Вот два скрина. Может сможете подсказать в чём проблема? http://prntscr.com/5s7mo3 и вот ошибка в логе это http://prntscr.com/5s7mwq и это http://prntscr.com/5s7n54 . применяю на cms joomla 3 .

Ответить
Impressive 19 мая 2015 в 20:57

Тоже не работает ничего.

Ответить
ываываыва 23 февраля 2016 в 21:50

Вы упали?! Столько кода только для подсказки?!

Ответить