Всплывающие подсказки на jQuery
773

Всплывающие подсказки на jQuery

13 ноября 2008, 6:00JavaScriptрейтинг +5-

Возможно, некоторые из вас были на сайте программы «Кода» и видели там вот такой интересный эффект:

Coda Bubble

Так вот, в этом уроке мы посмотрим, как сделать такую же всплывающую подсказку средствами jQuery.

Для начала, давайте посмотрим, что должно получиться в итоге. Понравилось? Тогда идем дальше.

HTML разметка

Код пузыря и объекта, при наведении курсора на который будет появляться подсказка.

<div class="bubbleInfo">
<div id="download" class="trigger">Наведи на меня курсор</div>
<table style="opacity: 0; top: -50px; left: -33px; display: none;" id="dpop" class="popup">
<tbody><tr>
<td id="topleft" class="corner"></td>
<td class="top"></td>
<td id="topright" class="corner"></td>
</tr>

<tr>
<td class="left"></td>
<td>Вот здесь пишем текст</td>
<td class="right"></td>
</tr>

<tr>
<td class="corner" id="bottomleft"></td>
<td class="bottom"><img alt="popup tail" src="files/bubble-tail2.png" height="29" width="30" /></td>
<td id="bottomright" class="corner"></td>
</tr>
</tbody></table>
</div>

CSS

Теперь прописываем стили всем элементам, при этом делаем так, чтобы при отключенных скриптах ничего не плыло:

.bubbleInfo {
position: relative;
top: 150px;
left: 100px;
width: 500px;
}
.trigger {
position: absolute;
}

.popup {
position: absolute;
display: none;
z-index: 50;
border-collapse: collapse;
font-size: .8em;
}

.popup td.corner {
height: 15px;
width: 19px;
}

.popup td#topleft {
background-image: url(files/bubble-1.png);
}

.popup td.top {
background-image: url(files/bubble-2.png);
}

.popup td#topright {
background-image: url(files/bubble-3.png);
}

.popup td.left {
background-image: url(files/bubble-4.png);
}

.popup td.right {
background-image: url(files/bubble-5.png);
}

.popup td#bottomleft {
background-image: url(files/bubble-6.png);
}

.popup td.bottom {
background-image: url(files/bubble-7.png);
text-align: center;
}

.popup td.bottom img {
display: block;
margin: 0 auto;
}

.popup td#bottomright {
background-image: url(files/bubble-8.png);
}

jQuery

Теперь сам код, который реализовывает эту прикольную анимацию.

$(function () {
$('.bubbleInfo').each(function () {
var distance = 10;
var time = 250;
var hideDelay = 500;

var hideDelayTimer = null;

var beingShown = false;
var shown = false;
var trigger = $('.trigger', this);
var info = $('.popup', this).css('opacity', 0);


$([trigger.get(0), info.get(0)]).mouseover(function () {
if (hideDelayTimer) clearTimeout(hideDelayTimer);
if (beingShown || shown) {
return;
} else {
beingShown = true;

info.css({
top: -40,
left: -33,
display: 'block'
}).animate({
top: '-=' + distance + 'px',
opacity: 1
}, time, 'swing', function() {
beingShown = false;
shown = true;
});
}

return false;
}).mouseout(function () {
if (hideDelayTimer) clearTimeout(hideDelayTimer);
hideDelayTimer = setTimeout(function () {
hideDelayTimer = null;
info.animate({
top: '-=' + distance + 'px',
opacity: 0
}, time, 'swing', function () {
shown = false;
info.css('display', 'none');
});

}, hideDelay);

return false;
});
});
});

Конец

И вот, что получиться, если собрать все воедино. Надеюсь, урок вам понравился ;-)

Memori.rumister-wong.combobrdobr.rumoemesto.rudel.icio.uszakladki.yandex.rugoogle.com/bookmarks/

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
Подписка по электронной почте
 

RSS Комментарии

Под IE 6.0 работает с багами и лагами.
Teddy, 13 ноября 2008, 11:21
Зачетная подсказка, обязательно найдется для нее место :-)
Вадим, 13 ноября 2008, 13:33
Отличный эффект всплывания, очень ужобно при чистке страницы от большого кол-ва текста.
Иван, 13 ноября 2008, 17:38
Teddy, баги от того, что 6-ой ослик не понимает прозрачности в png - но это довольно просто исправляется
Grin, 13 ноября 2008, 18:57
Спасибо за статью. Кстати, поправьте: "и вот, что получиТСЯ ...".
Vencedor, 14 ноября 2008, 1:26
Да, с грамматическими ошибками надо бороться ;) Давно искал что-то подобное. Нашел в другом месте подборку отличную. Это как то не очень понравилось.
Сергей, 14 ноября 2008, 14:17
Простите - не потеме, только начал jQuery юзать как задать очередность выполнения функций например меняем позицию дива1 top:0 -> top:100 после того как див1 получил позицию top:100 мы берем див2 и делаем с ним чтонибудь, смысл в том чтобы все работало в определенном порядке, сначало делаем это, а когда это завершилось делаем другое с другим объектом
krevedko, 15 ноября 2008, 18:19
Насколько я знаю jQuery и так все делает только в том порядке в каком указали, а не все сразу.
eSender, 16 ноября 2008, 22:41
Grin, png-то пофиксится, но вот когда на прозрачный png еще и opacity устанавливаешь, то получается, извините, какашка. Откройте страницу в IE7 и убедитесь.
Vencedor, 24 ноября 2008, 4:07
а как сделать предзагрузку исспользуемых изображений?
ahat, 18 декабря 2008, 15:40

Спонсоры

Wi-Fi точки в твоем городе
Profit-project.ru - заработай на своих сайтахРеклама на сайте

Блогорол