Всплывающие подсказки
Бывает, что в тексте статьи необходимо сделать всплывающую подсказку по клику на слово или картинку. Вот один из способов, как можно реализовать данную функцию.
Итак, сделаем ссылку блок с информацией, которая будет выводиться во всплывающей подсказке.
<!-- Ссылка --> <a href="javascript:;" id="link">Симфония</a> <!-- Блок --> <div class="hide show" id="block"> <b>Симфония</b> — музыкальное произведение для оркестра. Как правило, симфонии пишутся для большого оркестра смешанного состава (симфонического), но существуют и симфонии для струнного, камерного, духового и других оркестров; в симфонию могут вводиться хор и сольные вокальные голоса. </div>
Оформим:
.hide { display: none; } .show { padding: 5px; background: #fff; border: 1px solid #ccc; box-shadow: #ccc 0 0 10px; border-radius: 5px; width: 320px; } a { text-decoration: none; /* Убираем подчеркивание */ border-bottom: 1px dashed #000080; /* Добавляем свою линию */ }
Класс show – оформление блока. Если этому блоку добавить класс hide то он будет скрыт.
Теперь сам скрипт:
$(document).ready(function() { $('#link').click(function() {viewTooltip(this, $('#block'));}); //показываем или скрываем блок $('#block').click(function() {$($('#block')).fadeOut('fast');}); //скрываем блок, при клике по нему }); //Показывает всплывающую подсказку //elem - элемент для которого подсказка //block - блок подсказки function viewTooltip(elem, block) { $elTop = $(elem).height(); // высота строки (ссылки) $elLeft = 0; $(elem).css({'outline': 'none'}); $(block).css({'position': 'absolute', 'top': (elem.offsetTop + $elTop) + 'px', 'left': (elem.offsetLeft + $elLeft) + 'px' }); if($(block).is(':visible')) $(block).fadeOut('fast'); else $(block).fadeIn('fast'); elem.focus(); }
При клике по ссылке вызывается функция viewTooltip(). Вычисляются координаты ссылки и блок позиционируется под ссылкой: elem.offsetTop – координаты ссылки от верхней части экрана, elem.offsetLeft – координаты ссылки от левой стороны ссылки. Т.к. мы хотим чтобы блок выводился под ссылкой, надо прибавить elem.offsetTop размер строки (ссылки): (elem.offsetTop + $elTop) + ‘px’.
Вот что у нас получилось DEMO
Пример полностью:
СимфонияСимфония — музыкальное произведение для оркестра. Как правило, симфонии пишутся для большого оркестра смешанного состава (симфонического), но существуют и симфонии для струнного, камерного, духового и других оркестров; в симфонию могут вводиться хор и сольные вокальные голоса.