adsPlace_1

Войти или Зарегистрироваться

Hosting Ukraine

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

Уже ни для кого не секрет, что чем проще и информативный сайт тем лучше. Но тут у разработчиков возникает проблема компоновки информационных блоков. С одной стороны нужно делать все понятно и интуитивно для пользователя, с другой — вложить максимально полезной информации. И чем сложнее проект, тем меньше места остается на блоки с подсказками. Идеальным решением стало использование всплывающих подсказок.

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

<div id="wrapper">
<p>Pellentesque habitant morbi tristique <a href="#" data-title="I am happy!" class="need_hint">senectus</a> et netus et malesuada fames ac <a href="#" data-title="Hi, I'm a tooltip thingy." class="need_hint">turpis</a> egestas. Vestibulum tortor quam, feugiat, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat <a href="#" data-title="Ooooh<br>Look at me<br>I'm a fancy tooltip" class="need_hint">eifend</a> leo.</p>
</div>

Здесь можно увидеть структуру тега а. В нем появился замечательный атрибут data. Это фишка взята из HTML5. В данном примере мы записываем в атрибут data-title сам текст подсказки. К ссылке, для которой нужно подсказка, присваиваем класс need_hint.

Важно!  Если Вы используете в ссылках атрибут alt, то будет выводиться стандартная всплывающая подсказка с описанием ссылки. Если ссылка не индексируется, тогда уберите атрибут alt.

Подключаем библиотеку jQuery.

Теперь рассмотрим код jquery


$(function(){

$('a.need_hint').each(function(){
var title = $(this).attr('data-title');
var width = $(this).width();
var height = $(this).height();
$(this).wrap('<div class="wrapper_hint">').css({cursor : 'pointer'});
$(this).parent('.wrapper_hint').append('<div class="hint">'+title+'<span class="arrow_hint"></span></div></div>');
var width_hint = $(this).siblings('.hint').width();
var width_arrow = $(this).siblings('.hint').find('.arrow_hint').width();
var leftPos = (width_hint-width)/2+width_arrow;
$(this).siblings('.hint').css({left : -leftPos, bottom : height+10 });
});

$('.need_hint').hover(function(){
$(this).parent('.wrapper_hint').find('.hint').stop(true,true).show('scale',{direction:'down'},300);
},function(){
$(this).parent('.wrapper_hint').find('.hint').stop(true,true).hide('scale',{direction:'down'},200);
})

});

Через jquery выбираем  все ссылки с классом need_hint, записываем значение атрибута data-title в переменную, записываем ширину и высоту элемента. Далее оборачиваем ссылку контейнером div с классом wrapper_hint и присваиваем ему стиль курсора. Вставляем в него наш блок всплывающей подсказки и выравниваем его ровно по центру ссылки.

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

Код css тоже не представляет труда:

.wrapper_hint{
position: relative;
display: inline;
}

.hint, .arrow_hint{
border: 2px solid silver;
background: #F7F7F7;
}

.hint{
position: absolute;
z-index: 1000;
padding: 10px;
padding-bottom: 15px;
border-radius:15px;
display: block;
min-width: 70px;
white-space: nowrap;
display: none;
}

.arrow_hint{
display: block;
position: absolute;
width: 16px;
height: 16px;
left: 50%;
bottom: -12px;
margin-left: -8px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}

.arrow_hint:after{
content: "";
position: absolute;
background: #F7F7F7;
width: 19px;
height: 19px;
top: -3px;
left: -3px;

}

Для изменения стиля  подсказки, измените стиль для класса hint и arrow_hint.

Вот и все! Мы достигли нашего результата!

UPDATE! Скрипт переделан в виде плагина. Качайте исходник. Для работы необходимо в теги head подключить скрипт.

<script src="jquery.hint.js"></script>
<script src="scripts.js"></script>

А в файле scripts.js достаточно прописать:

$('a.need_hint').needHint();

Свои вопросы оставляйте в комментариях!

Последние из рубрики

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

  • Комментариев еще нет. Будь первым!

    Оставь свой отзыв

    Для вставки кода используйте кнопки php, html, javascript, css, sql

    * - поля обязательны к заполнению