Лупа на jQuery

24 ноября 2008, 19:00 Павел Марковнин JavaScript рейтинг +19-

Лупа на jQueryПривет!

Сегодня мы рассмотрим еще один полезный плагин jQuery — лупу (jQuery magnify tool).

Все, что вам нужно, это сделать 2 пропорциональные картинки (одну маленькую и одну нормальных размеров), html разметку и небольшой кусок javascript кода.

Как обычно, сначала посмотрим пример. А теперь поехали.

Протестировано

Замечания по использованию

HTML

Итак, начинаем. Для начала посмотрим HTML код. Здесь все стандартно — подключаем jQuery, файл плагина и делаем разметку для картинки:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Лупа на jQuery</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.magnify-1.0.2.js"></script>
<style>
img {
border: 1px solid #CCC;
}
</style>
</head>

<body>
<h1>Лондонское метро</h1>
<p>Карта лондонского метро довольно большая. Но теперь у нас есть лупа ;-)</p>
<h3>Дефолтные настройки</h3>
<p><a href="walkmap.gif" id="magnify1"><img src="walkmap_small.gif" /></a></p>

<h3>Немного модифицированные настройки</h3>
<p><a href="walkmap.gif" id="magnify2"><img src="walkmap_small.gif" /></a></p>

</body>
</html>

JavaScript

Первый раз вызовем лупу стандартным способом (при наведении курсора), без всяких дополнительных настроек.

<script type="text/javascript">
$("#magnify1").magnify();
</script>

Теперь сделаем так, чтобы лупа вызывалась при клике и добавим несколько настроек.

<script type="text/javascript">
$("#magnify2").magnify({

showEvent: 'click',
hideEvent: 'click',
lensWidth: 60,
lensHeight: 60,
stagePlacement: 'right',
lensCss: { backgroundColor: '#cc0000',
border: '0px',
opacity: 0.5 },
stageCss: { border: '4px solid #33cc33' }

});
</script>

Таблица дополнительных параметров

параметр тип по умолчанию описание
lensWidth integer 100 длина лупы
lensHeight integer 100 высота лупы
showEvent string ’’mouseover’’ событие, при котором появляется лупа
hideEvent string ’’mouseout’’ событие, при котором исчезает лупа
stagePlacement string ’’right’’ положение лупы относительно картинки, может быть справа (’’right’’) или слева (’’left’’)
preload boolean true если стоит ’’true’’, скрипт загрузит большую картинку сразу после загрузки страницы;
если ’’false’’ — после события вызова лупы
loadingImage string пустая строака путь до индикатора загрузки; если пусто, то будет просто написано «Loading…»
stageCss object пустой объект дополнительные стили для зоны увеличения на меленькой картинки
lensCss object пустой объект дополнительные стили для лупы
onBeforeShow function пустая функция функция, которая запускается до появления лупы
onAfterShow function пустая функция функция, которая запускается после появления лупы
onBeforeHide function пустая функция функция, которая запускается до скрытия лупы
onAfterHide function пустая функция функция, которая запускается после скрытия лупы

Перекрытие select в IE 6

В шестом осле все селекты находятся выше (даже если вы будете менять z-index). Для этого можно использовать вот такой маленький хак, который скрывает селект, находящийся под лупой, до ее появления и показывает его при скрытие лупы.

$("#myimageid").magnify({
onBeforeShow : function() {
if ($.browser.msie && $.browser.version == '6.0')
$("select").css("visibility","hidden");
},
onAfterHide : function() {
if ($.browser.msie && $.browser.version == '6.0')
$("select").css("visibility","visible");
}
});

 

Ну вот, посмотрим пример еще раз и, если очень надо, сходим на страницу скрипта.

На этом все. Жду ваших вопросов и замечаний в комментариях.

Рекламное место, которое может стать вашим

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

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

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
  •  

Комментарии — 19

RSS
  • Аватарка
    24 ноября 2008 в 19:01 Влад
    Полезная вещ
  • Аватарка
    24 ноября 2008 в 21:42 ]]>Octane]]>
    Что-то оно не работает, события мыши чтоли не правильно отлавливаются, пробовал в FireFox 3.0.4 и Google Chrome.
  • Аватарка
    25 ноября 2008 в 6:56 grejjo
    Замечательно, но было бы удобнее если лупа появлялась не в дополнительном окошке справа, а непосредственно туда куда наводишь указателем. Иначе теряется весь смысл экономии пространства, уж проще взять и открыть данное изображение целиком.
  • Аватарка
    25 ноября 2008 в 8:51 Olhado
    Согласен. Даже в том виде, в каком эта лупа выглядит на картинке к статье, реализация была бы более удобной и логичной.
  • Аватарка
    25 ноября 2008 в 11:16 [{DarkAngel}]
    Класно конечно, но не особо вижу где это можно применить.
    Есть гугл мапс. Если применительно не к картографии то незнаю даже где оно нужно.
  • Аватарка
    26 ноября 2008 в 14:17 ]]>Grin]]>
    Olhado, такую (круглую) лупу нельзя реализовать без флеша.

    grejjo, если помещать увеличение непосредственно на картинку, то некоторые части изображения нельзя будет увеличить (углы, например).
  • Аватарка
    26 ноября 2008 в 14:18 ]]>Grin]]>
    Octane, оба примера не работают? У меня тоже третий FF и все нормально
  • Аватарка
    30 ноября 2008 в 17:53 Vamp
    такую круглую лупу можно реализовать без флэша, используя canvas, не вводите людей в заблуждение
  • Аватарка
    2 декабря 2008 в 23:43 ]]>Octane]]>
    >> Octane, оба примера не работают? У меня тоже третий FF и все нормально
    Попробовал еще раз, проблема наблюдается в вашем примере. У меня почему-то мышь выскакивает за границу плавающей рамки во время движения, и сама рамка не всегда появляется.
  • Аватарка
    12 января 2009 в 11:28 jusalex
    Очень меня выручила эта статья и сам скрипт. Надо было просматривать большую групповую фотку и это легко удалось.
  • Аватарка
    19 февраля 2009 в 17:10 Ney
    Ссылка на страницу скрипта нерабочая. Вот правильный вариант:
    http://www.jnathanson.com/index.cfm?page=jquery/magnify/magnify
  • Аватарка
    31 марта 2009 в 15:03 Blind
    И углы можно лупой показывать, попытался схематически изобразить как бы это выглядело :-)

    |----|
    --------| |
    | |----|
    | |
    | |
    ----------
  • Аватарка
    31 марта 2009 в 15:29 ]]>Grin]]>
    Blind, что-то очень уж схематично )
  • Аватарка
    31 марта 2009 в 15:32 ]]>Grin]]>
    Спасибо, Ney, исправил ссылку
  • Аватарка
    8 апреля 2009 в 21:56 Vadim
    вот на этом сайте использован интересный скрипт, пологаю что если пойти аналогичным путем то можно реализовать "круглую лупу"
    http://www.parallel.ua
  • Аватарка
    13 июля 2009 в 22:53 Александр
    Павел Марковнин, как реализовать отображение увеличенной области не справа, а под исходной картинкой? Или вообще в любом заданном месте.
  • Аватарка
    13 августа 2009 в 14:05 ]]>gps]]>
    Спасибо большое отличный сайт...
  • Аватарка
    13 августа 2009 в 14:43 Евгений
    Можно реализовать просмотр углов если увеличить размер холста... (120 процентов). Немного места потеряется зато невероятно просто и работоспособно :)
  • Аватарка
    21 ноября 2009 в 13:49 Владислав
    Дайте кто знает пожалуйста ссылку, на как сделать лупу zoom плавное приближение и удаление. И еще надо такое: при позиционировании мышки на карте на миниатюре объекта или клик по этой миниатюре, чтобы отображалась фотография на эту миниатюру.
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>