<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jQuery и другое... &#187; фотогалерея</title>
	<atom:link href="http://www.linkexchanger.su/tag/fotogalereya/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linkexchanger.su</link>
	<description>css, html, php, javascript, jQuery, ajax ... - решения, примеры, рецепты</description>
	<lastBuildDate>Sun, 08 Jan 2012 13:25:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Галерея LightBox и ее клоны</title>
		<link>http://www.linkexchanger.su/2009/112.html</link>
		<comments>http://www.linkexchanger.su/2009/112.html#comments</comments>
		<pubDate>Fri, 27 Nov 2009 06:37:29 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[фотогалерея]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2009/112.html</guid>
		<description><![CDATA[Почему решил написать этот обзор? Во-первых, предыдущая статья про LightBox безнадежно устарела. Во-вторых, мне LightBox нравится. Правда было время, когда разработчики плагина убирали оттуда поддержку ie6, но потом, видимо одумавшись, вернули ее. В общем, всем хорош плагин LightBox, но вот заточен он только под фото. А если приперло вывести видео с YouTube или вообще какой-нибудь [...]]]></description>
			<content:encoded><![CDATA[<p>Почему решил написать этот обзор? Во-первых, предыдущая <a href="http://www.linkexchanger.su/2008/65.html">статья про LightBox</a> безнадежно устарела. Во-вторых, мне LightBox нравится. Правда было время, когда разработчики плагина убирали оттуда поддержку ie6, но потом, видимо одумавшись, вернули ее. В общем, всем хорош плагин LightBox, но вот заточен он только под фото. А если приперло вывести видео с YouTube или вообще какой-нибудь контент в iframe? Да, да, знаю, есть <a href="http://www.linkexchanger.su/2008/66.html">галерея FancyBox</a>, сам пользуюсь, но LightBox все равно больше нравится. Поэтому и было решено покопаться среди многочисленных клонов галереи LightBox.<span id="more-112"></span></p>
<h3>Галерея LightBox</h3>
<p>Начинаем, так сказать, с первоисточника и сразу же смотрим <a href="http://www.linkexchanger.su/examples_2009/galleries/lightBox/demo.html" target="_blank">демо</a>, замечая при этом нюансы, чтобы потом сравнить с другими галереями.</p>
<p>Ясно, что для использования плагина нужно подключить к веб-странице файл библиотеки jquery-1.3.2.js, файл плагина jquery.lightbox.js и файл стилевого оформления плагина jquery.lightbox.css. Не забудьте, что в папке images полученного архива, хранятся изображения элементов управления, необходимые для работы плагина.</p>
<pre class="brush: xml;">&lt;link type=&quot;text/css&quot; href=&quot;js/jquery.lightbox.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;js/jquery-1.3.2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.lightbox.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Теперь о том, как собственно организовать галерею. Естественно понадобятся изображения из которых будет состоять галерея &#8211; миниатюры и соответствующие им полноразмерные изображения. Общая конструкция такая:</p>
<pre class="brush: xml;">&lt;a rel=&quot;lightbox&quot; href=&quot;images/large.jpg&quot; title=&quot;Какой-то текст&quot;&gt;
&lt;img src=&quot;images/small.jpg&quot; /&gt;
&lt;/a&gt;</pre>
<p>Картинка-миниатюра заключена в тэг а, атрибут href которого указывает на соответствующее полноразмерное изображение. В атрибуте rel содержится ключевое слово &#8211; lightbox. Такого кода достаточно, чтобы при клике по миниатюре в отдельном слое открылось большое (именно большое, потому что по умолчанию оно масштабируется, если не помещается в области просмотра) изображение. Текст, содержащийся в атрибуте title тэга a станет комментарием к открывшемуся изображению.</p>
<p>В рассмотренном примере функциональность плагина применена к отдельному изображению, а нам нужно сделать тоже самое для группы. Смотрим следующую разметку:</p>
<pre class="brush: xml;">&lt;a rel=&quot;lightbox-tour&quot; href=&quot;images/large.jpg&quot; title=&quot;Какой-то текст&quot;&gt;
&lt;img src=&quot;images/small.jpg&quot; /&gt;
&lt;/a&gt;</pre>
<p>К ключевому слову lightbox просто добавили произвольный суффикс, в данном случае -tour. Добавляйте какое-то количество таких конструкций в свой код, назначайте им одинаковый суффикс и плагин автоматически объединит изображения в группы. Естественно, в этом случае, кроме комментариев, которые также будут создаваться из содержимого атрибута title, появятся элементы управления для перемещения по галерее.</p>
<p>Если по каким-то причинам Вам нежелательно использовать атрибут rel, можно обойтись и без него. Создать галерею можно используя простой jQuery-код.</p>
<pre class="brush: jscript;">$(function(){
  $('a.gallery').lightbox();
});</pre>
<p>Если этот код использовать с приведенной ниже разметкой, то все элементы а, имеющие класс gallery, получат функциональность плагина, и атрибут rel тут не потребуется.</p>
<pre class="brush: xml;">&lt;a class=&quot;gallery&quot; href=&quot;images/large.jpg&quot; title=&quot;Какой-то текст&quot;&gt;
&lt;img src=&quot;images/small.jpg&quot; /&gt;
&lt;/a&gt;</pre>
<p>Плагин LightBox имеет некоторое количество пользовательских настроек, с помощью которых можно переопределить поведение по умолчанию. Обычно jQuery-плагины принимают такие настройки в виде объекта, передаваемого методу в качестве аргумента. Здесь дело обстоит несколько иначе &#8211; для настройки вызывается отдельный метод. Ниже приведен пример кода, который создаст галерею из изображений, заключенных в тэг а с классом gallery и передаст плагину некоторые настройки.</p>
<pre class="brush: jscript;">$(function(){
  $(&quot;a.gallery&quot;).lightbox();
  $.Lightbox.construct({
    text: {
      image: &quot;Фото&quot;,
      of: &quot;из&quot;
    },
    download_link: false,
    opacity: 0.5,
    show_linkback: false
  });
});</pre>
<p>Кстати, помимо использования $.Lightbox.construct(); есть другая возможность передать настройки &#8211; в строке запроса. Примерно так:</p>
<pre class="brush: xml;">&lt;script src=&quot;js/jquery.lightbox.js?show_linkback=false&amp;amp;text.image=Фото&amp;amp;text.of=из&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<blockquote><p><strong>ПРИМЕЧАНИЕ:</strong> В плагине подразумевается поддержка IE6 и она включена по умолчанию. Для IE6 передача параметров возможна только в строке запроса (остальные браузеры тоже понимают такой способ). Если попытаться использовать $.Lightbox.construct(); то в IE плагин перестает работать. По крайней мере у меня не получилось.</p></blockquote>
<p>Ну а теперь немного о возможных опциях, которые можно использовать для настройки LightBox.</p>
<p><strong>show_linkback</strong> &#8211; по умолчанию true, показывает ссылку на страницу плагина на сайте plugins.jquery.com в правом верхнем углу. Передаем false, чтобы скрыть ссылку.<br />
<strong>show_helper_text</strong> &#8211; по умолчанию true, показывает текст (Click to close) в правом верхнем углу и всплывающую подсказку (Hover to interact) при наведении указателя мыши на этот текст. Используем false, чтобы убрать текст (и подсказку естественно тоже).<br />
<strong>show_info</strong> &#8211; по умолчанию &#8216;auto&#8217;, показывает информацию (текст, содержащийся в атрибуте title) под открывшимся изображением только в том случае, если указатель мыши находится над изображением. Чтобы показывать эту информацию независимо от положения указателя мыши используем значение true.<br />
<strong>show_extended_info</strong> &#8211; по умолчанию &#8216;auto&#8217;, показывает дополнительную информацию (Image 1 of nn) при указатель мыши прошел над область, где показывается основная информация (текст, содержащийся в атрибуте title). Чтобы показывать эту информацию независимо от положения указателя мыши используем значение true.<br />
<strong>download_link</strong> &#8211; по умолчанию true, предоставляет возможность открыть полноразмерное изображение в новом окне (вкладке) браузера, воспользовавшись ссылкой, которой является текст комментария к изображению (текст, содержащийся в атрибуте title). Чтобы запретить использование этой возможности, надо передать false.<br />
<strong>auto_resize</strong> &#8211; по умолчанию true, автоматически изменяет размеры картинки, если она слишком большая и не вписывается в область просмотра. Необходимо передать false, чтобы отменить это поведение.<br />
<strong>ie6_support</strong> &#8211; по умолчанию true, включена поддержка IE6. Чтобы отключить ее, надо передать false.<br />
<strong>ie6_upgrade</strong> &#8211; по умолчанию true, показывает сообщение, призывающее пользователей IE6 проапгрейдить свое ПО (у меня почему-то не сработало).<br />
<strong>speed</strong> &#8211; число, определяющее количество миллисекунд, которые отводятся на переход между двумя изображениями. По умолчанию установлено 400.<br />
<strong>baseurl</strong> &#8211; по умолчанию null, но можно указать url для автоматического подключения файлов, которые использует скрипт (стили, картинки).<br />
<strong>files</strong> &#8211; объект, в свойствах которого можно передать местоположение требуемых файлов (используется, если названия файлов менялись). Можно использовать следующие свойства: js.lightbox, js.colorBlend, css.lightbox, images.prev, images.next, images.blank, images.loading.<br />
<strong>text</strong> &#8211; объект, в свойствах которого можно передать текст частей интерфейса. Используется для перевода на нужный язык. Можно использовать следующие свойства: image, of, close, closeInfo, download, help.close, help.interact, about.text, about.title, about.link.<br />
<strong>keys</strong> &#8211; объект, в свойствах которого можно определить &laquo;горячие клавиши&raquo; для перемещения по галерее вперед и назад, а также для закрытия галереи. Используются свойства close, prev, next.<br />
<strong>opacity</strong> &#8211; прозрачность слоя, который появляется при просмотре галереи между большими изображениями и основным содержимым страницы. Значение может изменяться от 0 до 1. По умолчанию используется значение 0.9.<br />
<strong>padding</strong> &#8211; по умолчанию null, но можно указать число, которое будет определять отступы вокруг просматриваемого изображения.<br />
<strong>rel</strong> &#8211; по умолчанию &#8216;lightbox&#8217;, определяет значение в атрибуте rel тега а (см. пример html-разметки), исходя из которого плагин автоматически формирует галереи. Можно передать строку, в которой определить любое удобное значение.<br />
<strong>auto_relify</strong> &#8211; по умолчанию true, плагин должен автоматически искать и формировать галереи. Чтобы отменить такое поведение следует передать значение false.</p>
<blockquote><p><strong>Выводы:</strong> Плюсы &#8211; неплохое оформление, большинство опций действительно полезны. Минусы &#8211; сложности с настройкой плагина с учетом поддержки IE6, не все опции удается использовать так, как заявлено разработчиком, не работает ни с каким другим контентом, кроме фото. Имхо, минусов больше, причем перечислены еще не все.</p></blockquote>
<h3>Галерея NFLightBox</h3>
<p>По сравнению с обычным LightBox не имеет таких заморочек с настройкой под все основные браузеры, но точно также работает только с фото. Однако имеет возможность автоматической смены изображений &#8211; слайдшоу.</p>
<p>Смотрим <a href="http://www.linkexchanger.su/examples_2009/galleries/NFLightBox/demo.html" target="_blank">демо</a>, замечаем отличия от LightBox&#8230;</p>
<p>Подключается просто:</p>
<pre class="brush: xml;">&lt;link type=&quot;text/css&quot; href=&quot;css/nf.lightbox.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;js/jquery-1.3.2.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/NFLightBox.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>В разделе HEAD надо указать пути к файлу стилевого оформления, файлу библиотеки jQuery и файлу плагина. Требования к разметке точно такие же, как и у LightBox.</p>
<pre class="brush: xml;">&lt;a href=&quot;images/large.jpg&quot; title=&quot;Какой-то текст&quot;&gt;
&lt;img src=&quot;images/small.jpg&quot; /&gt;
&lt;/a&gt;</pre>
<p>Создается галерея с помощью следующего jQuery-кода:</p>
<pre class="brush: jscript;">$('a').lightBox({
  overlayBgColor: '#363',
  txtImage: 'Фото',
  txtOf: 'из',
  txtPrev: ' Назад',
  txtNext: ' Вперед',
  keyToClose: 'q',
  keyToPrev: 'z',
  keyToNext: 'c'
});</pre>
<p>Этот плагин тоже имеет приличное количество настроек. Использование некоторых показано в приведенном выше коде. Довольно полезная опция overlayBgColor &#8211; позволяет менять цвет промежуточного слоя между просматриваемым изображением и содержимым веб-страницы. В LightBox для этого пришлось бы править css-файл.</p>
<p>Чуть подробнее про опции, которые можно использовать для настройки.</p>
<p><strong>overlayBgColor</strong> &#8211; по умолчанию #000 (черный), используется для задания цвета промежуточного слоя.<br />
<strong>overlayOpacity</strong> &#8211; по умолчанию 0.8, задает прозрачность промежуточного слоя. Можно использовать значения от 0 до 1.<br />
<strong>imageLoading, imageBtnPrev, imageBtnNext, imageBtnClose, imageBlank, imageBtnBottomPrev, imageBtnBottomNext, imageBtnPlay, imageBtnStop</strong> &#8211; во всех этих опциях можно передать строку, содержащую путь к файлу изображения соответствующего элемента управления.<br />
<strong>containerBorderSize</strong> &#8211; по умолчанию 10, определяет ширину рамки вокруг просматриваемого изображения.<br />
<strong>containerResizeSpeed</strong> &#8211; по умолчанию 500, время в миллисекундах, за которое будет изменяться размеры области просмотра изображения при переходе от одного изображения к другому.<br />
<strong>txtImage, txtOf, txtPrev, txtNext</strong> &#8211; вполне понятные опции. Например задав значения txtImage: &#8216;Фото&#8217; и txtOf:&#8217;из&#8217; Вы уже будете видеть не Image 1 of 8, а Фото 1 из 8.<br />
<strong>keyToClose, keyToPrev, keyToNext</strong> &#8211; с помощью этих опций можно задать &laquo;горячие&raquo; клавиши. Например keyToClose:&#8217;q&#8217; &#8211; при нажатии клавиши &#8216;q&#8217; просмотр будет прекращен.<br />
<strong>slideShowTimer</strong> &#8211; по умолчанию 5000, т.е.если Вы запустите слайдшоу, то изображения будут меняться каждые 5 секунд.</p>
<blockquote><p><strong>Выводы:</strong> Плюсы &#8211; неплохое оформление, большинство опций действительно полезны, есть автоматическая смена фото при просмотре, нет сложностей с настройкой. Минусы &#8211; png-файлы для элементов управления не очень здорово выглядят в IE6 (и к сожалению jquery.pngfix.js тут не поможет), не работает ни с каким другим контентом, кроме фото. Имхо, лучше, чем стандартный LightBox, но все же не то, что хочется.</p></blockquote>
<h3>Галерея PrettyPhoto</h3>
<p>Так и хочется написать &#8211; PrettyPhoto мой выбор! Во-первых, этот плагин позволяет работать не только с фото. В области просмотра можно выводить видео с YouTube, ролики в формате .mov (Apple QuickTime), содержимое во flash-формате и наконец вообще любой контент через iframe. Во-вторых, этот плагин имеет свой API, чего нет в рассмотренных ранее плагинах.<br />
Смотрим <a href="http://www.linkexchanger.su/examples_2009/galleries/prettyPhoto/demo.html" target="_blank">демо</a>, отмечаем отличия от других галерей и начинаем разговор про PrettyPhoto.</p>
<p>Сначала необходимо подключить к веб-страницы файл библиотеки jquery-1.3.2.js, файл плагина jquery.prettyPhoto.js и файл стилевого оформления плагина prettyPhoto.css.</p>
<pre class="brush: xml;">&lt;link type=&quot;text/css&quot; href=&quot;css/prettyPhoto.css&quot; rel=&quot;stylesheet&quot; /&gt;
&lt;script src=&quot;js/jquery-1.3.2.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/jquery.prettyPhoto.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Организация галереи (или галерей) почти не отличается от того, как это делается в LightBox.</p>
<pre class="brush: xml;">&lt;a rel=&quot;prettyPhoto[gallery_1]&quot; href=&quot;max/1.jpg&quot; title=&quot;Фото номер 1&quot;&gt;
&lt;img src=&quot;min/1.jpg&quot; alt=&quot;Фото номер 1&quot; /&gt;
&lt;/a&gt;</pre>
<p>Картинка-миниатюра заключена в тэг а, атрибут href которого указывает на соответствующее полноразмерное изображение. В атрибуте rel содержится ключевое слово &#8211; prettyPhoto. Чтобы создать несколько различных галерей на обной веб-странице, в атрибуте rel следует указать например &#8211; prettyPhoto[gallery_easy] для условной первой галереи, prettyPhoto[other_gallery] &#8211; для другой и так далее&#8230;</p>
<p>С помощью jQuery-кода создаем галерею. Используем настройки, установленные по умолчанию.</p>
<pre class="brush: jscript;">$(function(){
  $(&quot;a[rel^='prettyPhoto']&quot;).prettyPhoto();
});</pre>
<p>Опции, которые можно использовать для настройки prettyPhoto:<br />
<strong>animationSpeed</strong> &#8211; по умолчанию &#8216;normal&#8217;. Другие возможные значения &#8211; &#8216;fast&#8217; и &#8217;slow&#8217;. Скорость анимации изменения размеров окна просмотра при переходе от одного изображения к другому.<br />
<strong>padding</strong> &#8211; по умолчанию 40. Число, опредяляющее отступы вокруг изображения.<br />
<strong>opacity</strong> &#8211; по умолчанию 0.80, прозрачность промежуточного слоя. Изменяется от 0 до 1.<br />
<strong>showTitle</strong> &#8211; по умолчанию true. Заголовок (содержимое атрибута title тэга а), который отображается в левом верхнем углу над областью просмотра. Чтобы отключить надо использовать значение false.<br />
<strong>allowresize</strong> &#8211; по умолчанию true. По умолчанию полноразмерное изображение масштабируется, если ему не хватает места для отображения в полном размере. Можно отменить это поведение, передав false.<br />
<strong>counter_separator_label</strong> &#8211; по умолчанию &#8216;/&#8217;. Разделитель в счетчика изображений галереи.<br />
<strong>theme</strong> &#8211; по умолчанию &#8216;light_rounded&#8217;. Да! Плагин поддерживает несколько тем оформления. Кроме light_rounded возможны также dark_rounded, light_square, dark_square. Вот только для IE6 принудительно используется тема light_square (светлый фон и нескругленные углы).<br />
<strong>hideflash</strong> &#8211; по умолчанию false. Скрывает все flash-объекты на странице при просмотре галереи, чтобы они не отображались поверх. Если этого не требуется, можно установить значение true.<br />
<strong>modal</strong> &#8211; по умолчанию false. Если установить true, будет использоваться модальный режим, т.е. завершить просмотр галереи можно будет только нажатием на картинку &#8216;close&#8217;.</p>
<p>Еще две полезные опции, в которых можно определить callback-функции, вызываемые при наступлении определенного события.<br />
<strong>changepicturecallback</strong> &#8211; функция, определенная в этой опции, будет вызываться каждый раз при смене изображения галереи.<br />
<strong>callback</strong> &#8211; функция, определенная в этой опции, будет вызываться при завершении просмотра.</p>
<p>Плюс ко всем этим полезным опциям, плагин предоставляет четыре метода.</p>
<p><em>$.prettyPhoto.open(&#8216;path/to/image&#8217;,'Title&#8217;,'Description&#8217;)</em> &#8211; метод позволяет открыть нужную галерею. Пример будет чуть позже.<br />
<em>$.prettyPhoto.changePage(&#8216;next&#8217;)</em> &#8211; с помощью этого метода можно осуществить переход к следующему изображению галереи.<br />
<em>$.prettyPhoto.changePage(&#8216;previous&#8217;)</em> &#8211; с помощью этого метода можно осуществить переход к предыдущему изображению галереи.<br />
<em>$.prettyPhoto.close()</em> &#8211; с помощью этого метода можно закрыть галерею.</p>
<p>Самый большой интерес наверняка вызовет метод, с помощью которого можно открыть галерею практически как угодно и откуда угодно. Поэтому смотрим <a href="http://www.linkexchanger.su/examples_2009/galleries/prettyPhoto/demo2.html" target="_blank">демо</a>. Код там настолько несложный и понятный даже интуитивно, что не стоит его и комментировать.</p>
<p>В общем эта галерея может удовлетворить наверное все потребности веб-мастеров. Кроме одной &#8211; слайд-шоу. Чтобы не было обидно, давайте попробуем немного доработать предыдущий пример. Мы дополнительно подключим плагин jquery.timers.js и воспользуемся тем фактом, что в опциях changepicturecallback и callback можно определить функции. В html-разметке добавим select, откуда можно будет выбирать значения задержки при смене изображений. Что из этого получилось, смотрите <a href="http://www.linkexchanger.su/examples_2009/galleries/prettyPhoto/demo3.html" target="_blank">демо</a>, там же можно посмотреть и исходный код.</p>
<p>В опции changepicturecallback, пользуясь возможностями плагина jQuery Timers, при смене изображений каждый раз запускаем одноразовый таймер со значением, полученным из выбранной опции в селекте. По срабатыванию таймера вызываем метод $.prettyPhoto.changePage(&#8216;next&#8217;) заставляя плагин показывать следующее изображение. В опции callback определяем функцию, которая останавливает таймер, если галерея была закрыта и заодно, с помощью alert благодарим за просмотр.</p>
<p>На самом деле такое решение небезгрешно, но зато сделано &laquo;на колене в 5 секунд&raquo;, поэтому кто имеет желание, может в комментариях предлагать свои идеи по этому поводу.</p>
<blockquote><p>Все примеры, использованные в этой статье, лежат в этом <a href="http://www.linkexchanger.su/examples_2009/galleries/demo.zip">архиве</a>.</p></blockquote>
<p>Для тех, кто хочет самостоятельно изучить первоисточники, пожалуйста, ссылки: <a href="http://www.balupton.com/sandbox/jquery_lightbox_bal/demo/">LightBox</a>, <a href="http://www.notesfor.net/post/NotesForLightBox.aspx">NFLightBox</a>, <a href="http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/">PrettyPhoto</a>.</p>
<blockquote><p><strong>Выводы:</strong> для себя выбрал именно PrettyPhoto&#8230;. по крайней мере пока не появилось что-нибудь еще лучше.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2009/112.html/feed</wfw:commentRss>
		<slash:comments>70</slash:comments>
		</item>
		<item>
		<title>Мини фотогалерея из 11 строк кода</title>
		<link>http://www.linkexchanger.su/2009/84.html</link>
		<comments>http://www.linkexchanger.su/2009/84.html#comments</comments>
		<pubDate>Thu, 19 Mar 2009 07:00:11 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[фотогалерея]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2009/84.html</guid>
		<description><![CDATA[Собственно я не собирался делать вообще никаких галерей. Просто как обычно отметил для себя довольно часто повторяющийся вопрос &#8211; как заставить картинку плавно появиться после ее окончательной загрузки? В общем это не очень сложно, но чтобы придать примеру какую-то практическую пользу я покажу как сделать из этого простенькую мини фотогалерею. Основное ее достоинство в том, [...]]]></description>
			<content:encoded><![CDATA[<p>Собственно я не собирался делать вообще никаких галерей. Просто как обычно отметил для себя довольно часто повторяющийся вопрос &#8211; как заставить картинку плавно появиться после ее окончательной загрузки? В общем это не очень сложно, но чтобы придать примеру какую-то практическую пользу я покажу как сделать из этого простенькую мини фотогалерею. Основное ее достоинство в том, что она реализована всего одиннадцатью строками кода, но думаю многим сможет пригодиться, поскольку не всегда бывает нужна мощная функциональность таких галерей как LightBox или FancyBox.<span id="more-84"></span></p>
<p>Начинаем с само собой разумеющегося &#8211;  подключаем библиотеку jQuery:</p>
<pre class="brush: xml;">&lt;script src=&quot;js/jquery-1.3.1.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Постараемся не вносить в HTML-разметку лишних идентификаторов, имен классов, попробуем обойтись минимумом. Для выстраивания миниатюр используем ненумерованный список <strong>ul</strong>, в каждом элементе <strong>li</strong> которого и будет содержаться миниатюра. Миниатюре &#8211; тэгу <strong>img</strong>, добавим атрибут <strong>alt</strong>, в который напишем комментарий к фотографии. Картинку-миниатюру заключим в тэг <strong>a</strong>, атрибут <strong>href</strong> которого будет указывать на полноразмерную фотографию. С миниатюрами все. Добавим в HTML-разметку элемент <strong>div</strong>, в который будем загружать полноразмерные изображения при клике на соответствующую миниатюру и вот ему пожалуй придется присвоить идентификатор <strong>#imgHolder</strong>. Получилась вот такая простенькая разметка:</p>
<pre class="brush: xml;">
&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&quot;max/1.jpg&quot;&gt;
      &lt;img src=&quot;min/1.jpg&quot; alt=&quot;Офигительный жучила...&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
  .......
  &lt;li&gt;
    &lt;a href=&quot;max/7.jpg&quot;&gt;
      &lt;img src=&quot;min/7.jpg&quot; alt=&quot;Гадина какая-то страшная...&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;imgHolder&quot;&gt;&lt;/div&gt;
</pre>
<p>С помощью CSS оформляем разметку так, как нам понравится.</p>
<pre class="brush: css;">
img { border:none; }
ul { margin:0; padding:0; list-style:none; }
ul li { display:inline; }
#imgHolder {
  position:relative;
  width:800px; height:600px;
  overflow:hidden;
}
#imgHolder em {
  position:absolute;
  left:10px; bottom:10px;
  margin:2px 10px; padding:2px 10px;
  background-color:#000;   color:#fff;
}</pre>
<p>В примере &#8211; не показываем рамку у изображений, для списка задаем нулевые значения полей и отступов, для элементов <strong>li</strong> устанавливаем свойству <strong>display</strong> значение <strong>inline</strong>, вытягивая таким образом список в строку. Зададим блоку <strong>#imgHolder</strong> ширину, высоту и на всякий случай свойству <strong>overflow</strong> присвоим значение <strong>hidden</strong>. Позиционируем элемент <strong>em</strong> внутри <strong>div</strong>&#8216;а абсолютно (сюда будем выводить комментарии к фотографиям) и оформим его соответствующим образом.</p>
<p>Осталось самое главное &#8211; эти одиннадцать строк кода, которые заставят работать эту конструкцию. Вот эти строки:</p>
<pre class="brush: jscript;">
$('ul img').click(function(){
  var path = $(this).parent().attr('href');
  var alt = $(this).attr('alt');
  $('#imgHolder').animate({opacity: 0},1000,function(){
    $(this).html('&lt;img src=' + path + ' /&gt;').find('img').bind('load',function(){
      $(this).parent().append('&lt;em&gt;' + alt + '&lt;/em&gt;').animate({opacity: 1},1000);
    });
  });
  return false;
});
$('ul img:first').click();
</pre>
<p>Давайте подробно, строка за строкой разберемся, что мы тут наделали.</p>
<p>При загрузке страницы, вернее при наступлении момента готовности DOM (кусок кода с $(document).ready() опущен) мы выбираем все элементы <strong>img</strong>, которые являются потомками элементов <strong>ul</strong>. Есть у нас такие? Да, есть &#8211; это картинки-миниатюры. Связываем с этим набором элементов событие <strong>click</strong>, при наступлении которого выполним некоторую функцию.</p>
<p>Что же будет делать эта функция? Для начала определяем пару переменных. <strong>path</strong> &#8211; здесь мы запомним значение атрибута <strong>href</strong> элемента, который является предком картинки-миниатюры, т.е. элемента <strong>a</strong>. <strong>alt</strong> &#8211; сюда поместим содержимое атрибута <strong>alt</strong> самой картинки-миниатюры, чтобы впоследствии вывести его в качестве комментария к полноразмерному изображению.</p>
<p>Дальше начинается самое интересное &#8211; с помощью метода <strong>animate()</strong> мы в течение 1000 мс плавно скроем элемент <strong>div</strong> с идентификатором <strong>#imgHolder</strong> через задание значения 0 его CSS-свойству <strong>opacity</strong>. И как только это произойдет начнем действовать дальше, указав в третьем параметре метода <strong>animate()</strong> callback-функцию, которая будет вызвана в этот момент.</p>
<p>Внутри этой функции <strong>this</strong> ссылается на элемент <strong>div</strong> с идентификатором <strong>#imgHolder</strong>. Помня это обстоятельство, помещаем в этот элемент <strong>div</strong> фрагмент html-кода, описывающий элемент <strong>img</strong> &#8211; полноразмерную картинку. В атрибуте <strong>src</strong> которой указываем путь, сохраненный ранее в переменной <strong>path</strong>. Следуя далее по цепочке вызовов, отыскиваем только что добавленный элемент с помощью метода <strong>find()</strong> и используя метод <strong>bind()</strong>, связываем еще одну callback-функцию c событием <strong>load</strong> &#8211; с моментом загрузки полноразмерного изображения.</p>
<p>Внутри этой функции <strong>this</strong> указывает уже на большую картинку, поэтому мы отыскиваем ее родителя (элемент <strong>div</strong> <strong>#imgHolder</strong>) и используя <strong>append()</strong> добавляем туда <strong>em</strong> с комментарием, который предусмотрительно сохранили в переменной <strong>alt</strong>. После этого вновь используем метод <strong>animate()</strong>, но уже для того, чтобы плавно, в течение 1 секунды показать элемент <strong>div #imgHolder</strong> с уже загруженной полноразмерной фотографией, устанавливая CSS-свойству <strong>opacity</strong> значение 1.</p>
<p><strong>return false</strong> служит для того, чтобы предотвратить стандартные действия браузера (т.е. переход по ссылке) при клике на элементе <strong>a</strong>.</p>
<p>Осталась только самая последняя строка кода, которая служит для того, чтобы при загрузке страницы подгрузить в <strong>#imgHolder</strong> полноразмерную фотографию с помощью эмуляции события <strong>click</strong> на первой картинке-миниатюре.</p>
<p>Проверил и убедился, что все работает в в FF2 и 3, Opera9, IE6 и 7, Google Chrome.</p>
<blockquote><p>Вы можете <a href="http://www.linkexchanger.su/example_misc/gallery/" target="_blank">открыть пример</a> в новом окне, испытать его и посмотреть полный исходный код. Вы можете <a href="http://www.linkexchanger.su/example_misc/gallery/gallery.zip">скачать</a> архив, который содержит все файлы примера.</p></blockquote>
<p>Предупреждая вопросы насчет всяких стрелочек вперед &#8211; назад и прочих штучек, хочу сразу напомнить, что это всего лишь пример, с помощью которого я стараюсь объяснить, как плавно скрыть и не менее плавно показать большую картинку только после ее окончательной загрузки.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2009/84.html/feed</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>jQuery FancyBox &#8211; отличная фотогалерея</title>
		<link>http://www.linkexchanger.su/2008/66.html</link>
		<comments>http://www.linkexchanger.su/2008/66.html#comments</comments>
		<pubDate>Tue, 19 Aug 2008 01:00:54 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[fancybox]]></category>
		<category><![CDATA[фотогалерея]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/66.html</guid>
		<description><![CDATA[Сегодня расскажу о еще одной великолепной галерее &#8211; jQuery FancyBox. Тем более, что в последней версии фотогалереи LightBox разработчики вырезали поддержку IE6 (с чем я в общем полностью согласен &#8211; надо жалеть разработчиков и обновлять программное обеспечение). Но поскольку не всем это понравится, я обещал подробно рассказать о какой-нибудь другой фотогалерее для jQuery, что с [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня расскажу о еще одной великолепной галерее &#8211; <strong>jQuery FancyBox</strong>. Тем более, что в последней версии фотогалереи LightBox разработчики вырезали поддержку IE6 (с чем я в общем полностью согласен &#8211; надо жалеть разработчиков и обновлять программное обеспечение). Но поскольку не всем это понравится, я обещал подробно рассказать о какой-нибудь другой фотогалерее для jQuery, что с удовольствием и делаю.<span id="more-66"></span><br />
Как всегда, сначала пример работы, который на этот раз придется продемонстрировать в <a href="http://www.linkexchanger.su/example_jquery/fancybox.html" target="_blank">новом окне</a>. Надеюсь, что многие оценят возможность отображать не только картинки, но и какой-либо контент, находящийся на странице &#8211; например видеоролики с YouTube. А как Вам возможность выводить вообще любой контент в iframe? Или спрятать за одной миниатюрой целую галерею фотографий? Смотрите, испытывайте, а потом будем разбираться как заставить все это работать на своем сайте.</p>
<blockquote><p>Нужные файлы (включая демонстрационные фото), Вы сможете найти в этом <a href="http://www.linkexchanger.su/example_jquery/fancybox.zip">архиве</a>. Сам плагин <strong>jquery.fancybox.js</strong>, дополнительные js-файлы и библиотеку jQuery можно найти в разделе <strong><a href="http://www.linkexchanger.su/download">Download</a></strong>.</p></blockquote>
<p>Итак приступим: для начала нам потребуется подключить к нашей HTML-странице как минимум два js-файла: <strong>jquery-1.2.6.js</strong> (библиотека jQuery) и <strong>jquery.fancybox.js</strong> (плагин FancyBox). Или четыре &#8211;  <strong>jquery.pngFix.js</strong> позволит устранить проблему использования png-файлов в IE, а <strong>jquery.metadata.js </strong>позволит Вам использовать атрибуты class для передачи параметров плагину (впрочем можно обойтись и без этого файла). Сделаем это в разделе HEAD. Не забудем и про файл стилевого оформления, как и про то, что пути у Вас могут отличаться от приведенных в примере&#8230;</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.6.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.fancybox.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.pngFix.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.metadata.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;fancybox.css&quot; /&gt;</pre>
<p>Теперь о HTML-разметке. Начнем с традиционного варианта использования фотогалереи &#8211; отобразим все миниатюры, при клике на которых будет открываться полноразмерное изображение и к нему добавятся элементы управления для перемещения назад и вперед. Я приведу пример, но Вы можете использовать такую разметку, которая нравится Вам.</p>
<pre class="brush: xml;">
&lt;ul id=&quot;gallery&quot;&gt;
  &lt;li&gt;
    &lt;a href=&quot;/example_jquery/fancybox_img/01.jpg&quot; rel=&quot;fancy-tour&quot; title=&quot;Россия - Греция 1 : 0&quot;&gt;
      &lt;img src=&quot;/example_jquery/fancybox_img/01m.jpg&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;/example_jquery/fancybox_img/02.jpg&quot; rel=&quot;fancy-tour&quot; title=&quot;Великий Гус...&quot;&gt;
      &lt;img src=&quot;/example_jquery/fancybox_img/02m.jpg&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;/example_jquery/fancybox_img/03.jpg&quot; rel=&quot;fancy-tour&quot; title=&quot;Это был наш день...&quot;&gt;
      &lt;img src=&quot;/example_jquery/fancybox_img/03m.jpg&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;/example_jquery/fancybox_img/04.jpg&quot; rel=&quot;fancy-tour&quot; title=&quot;Россия - Голландия 3 : 1&quot;&gt;
      &lt;img src=&quot;/example_jquery/fancybox_img/04m.jpg&quot; /&gt;
    &lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Картинка-миниатюра заключена в тэг А, который ссылается на полноразмерное изображение. Обратите внимание на атрибут <strong>rel</strong> тэга А &#8211; одинаковые значения означают принадлежность в одной группе изображений, ведь на одной странице Вы можете расположить их и не одну&#8230; А значение тэга <strong>title</strong> используется для вывода комментария к картинке.<br />
В своем примере я использую несколько CSS-правил, чтобы вытянуть список по горизонтали и убрать рамки картинок.</p>
<pre class="brush: css;">ul {
  list-style:none;
}
ul li {
  display:inline;
}
a img {
  border:none;
}</pre>
<p>Теперь о js-коде. Если использовать все значения по умолчанию, то проще не бывает:</p>
<pre class="brush: jscript;">$(document).ready(function(){
  $(&quot;#gallery a&quot;).fancybox();
});</pre>
<p>Т.е. мы просто отбираем все нужные нам элементы А и передаем этот набор плагину jQuery FancyBox, который проделывает всю остальную работу. Но можно использовать и дополнительные опции, например вот так:</p>
<pre class="brush: jscript;">$(document).ready(function(){
  $(&quot;#gallery a&quot;).fancybox({
    	overlayShow: true,
    	overlayOpacity: 0.5,
    	zoomSpeedIn: 1500,
    	zoomSpeedOut:600
    });
});</pre>
<p>Ниже я привожу весь список доступных опций.<br />
<strong>hideOnContentClick</strong> &#8211; скрывать контент по клику на полноразмерном изображении. Может принимать значения true или false. По умолчанию false.<br />
<strong>zoomSpeedIn</strong> &#8211; указывается скорость эффекта (в миллисекундах) при открытии полноразмерного изображения. По умолчанию &#8211; 0, т.е. без эффекта.<br />
<strong>zoomSpeedOut</strong> &#8211; указывается скорость эффекта (в миллисекундах) при закрытии полноразмерного изображения. По умолчанию &#8211; 0, т.е. без эффекта.<br />
<strong>overlayShow</strong> &#8211; показывать или нет дополнительный слой, который &laquo;затемняет&raquo; основное содержимое страницы. Может принимать значения true или false. По умолчанию false.<br />
<strong>overlayOpacity</strong> &#8211; прозрачность для overlayShow, если конечно он true. Изменяется от 0 до 1.<br />
<strong>frameWidth</strong> &#8211; определяет ширину контейнера, если выводится iframe и inline содержимое (см. примеры).<br />
<strong>frameHeight</strong> &#8211; определяет высоту контейнера, если выводится iframe и inline содержимое (см. примеры).<br />
<strong>itemLoadCallback</strong> &#8211; определяет пользовательскую функцию, которая выбирает группу фотографий для отображения (см. пример).</p>
<p>А теперь попробуем &laquo;спрятать&raquo; за одной миниатюрой целый набор полноразмерных изображений. Вот HTML-разметка для одной миниатюры.</p>
<pre class="brush: xml;">&lt;a id=&quot;custom&quot; href=&quot;javascript:;&gt;&lt;img src=&quot;/example_jquery/fancybox_img/05m.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;</pre>
<p>Ничего необычного тут нет &#8211; даже и пояснять нечего&#8230; Самое главное тут в js-коде, который мы и разберем подробнее.</p>
<pre class="brush: jscript;">var imageList = [
  {
    url: &quot;/example_jquery/fancybox_img/05.jpg&quot;,
    title: &quot;Первая картинка&quot;
  },
  {
    url: &quot;/example_jquery/fancybox_img/05-1.jpg&quot;,
    title: &quot;Вторая картинка&quot;
  },
  {
    url: &quot;/example_jquery/fancybox_img/05-2.jpg&quot;,
    title: &quot;Третья картинка&quot;
  },
  {
    url: &quot;/example_jquery/fancybox_img/05-3.jpg&quot;,
    title: &quot;Четвертая картинка&quot;
  }
];</pre>
<p>Мы создаем массив <strong>imageList</strong>, каждым элементом которого является объект, состоящий из пар ключ/значение. Конечно все уже поняли, что <strong>url</strong> указывает на размещение полноразмерного изображения, а <strong>title</strong> &#8211; конечно же содержит комментарий к нему. В этом массиве и &laquo;прячутся&raquo; все большие фотографии.</p>
<p>Теперь определим функцию, которая будет получать эту группу фотографий:</p>
<pre class="brush: jscript;">function getGroupItems(opts) {
  jQuery.each(imageList, function(i, val) {
    opts.itemArray.push(val);
  });
}</pre>
<p>Нам осталось только передать плагину fancybox необходимый параметр:</p>
<pre class="brush: jscript;">$(&quot;#custom&quot;).fancybox({
  itemLoadCallback: getGroupItems
});</pre>
<p>Разберем как вывести в галерею некий контент, находящийся на странице и до поры скрытый, а в качестве примера используем видеоролики с YouTube.</p>
<pre class="brush: xml;">
&lt;div style=&quot;display:none&quot; id=&quot;tesvideo&quot;&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/...&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;
&lt;embed src=&quot;http://www.youtube.com/v/...&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/div&gt;
</pre>
<p>Обратите внимание, чтобы картинка-крестик, по щелчку на котором закрывается галерея, была &laquo;выше&raquo; собственно содержимого, в код надо внести небольшие изменения добавив параметр <strong>wmode</strong> со значением <strong>transparent</strong>.<br />
Осталось показать только js-код:</p>
<pre class="brush: jscript;">$(&quot;#video&quot;).fancybox({
  zoomSpeedIn: 0,
  zoomSpeedOut:0,
  frameWidth: 425,
  frameHeight: 344
});</pre>
<p>Ну, и напоследок &#8211; вывод в галерею вообще любого содержимого через iframe. Вот простенький HTML:</p>
<pre class="brush: xml;">&lt;a id=&quot;frame&quot; href=&quot;http://www.google.ru/&quot;&gt;&lt;img src=&quot;/example_jquery/fancybox_img/08m.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;</pre>
<p>и javascript-код:</p>
<pre class="brush: jscript;">
$(&quot;#frame&quot;).fancybox({
  zoomSpeedIn: 0,
  zoomSpeedOut:0,
  frameWidth: 800,
  frameHeight: 600
});
</pre>
<p>Согласитесь, действительно хорошая галерея, правда?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/66.html/feed</wfw:commentRss>
		<slash:comments>150</slash:comments>
		</item>
		<item>
		<title>jQuery LightBox &#8211; отличная фотогалерея.</title>
		<link>http://www.linkexchanger.su/2008/65.html</link>
		<comments>http://www.linkexchanger.su/2008/65.html#comments</comments>
		<pubDate>Mon, 11 Aug 2008 01:24:18 +0000</pubDate>
		<dc:creator>Gennady</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[фотогалерея]]></category>

		<guid isPermaLink="false">http://www.linkexchanger.su/2008/65.html</guid>
		<description><![CDATA[
Давно собирался рассказать об этом плагине к библиотеке jQuery, но вот наконец-то собрался ликвидировать этот пробел. Плагин jQuery LightBox пользуется популярностью, и надо сказать вполне заслуженно. Легкий в использовании, гибкий в настройках, что еще нужно организации изящной галереи на сайте?
Давайте, как обычно, начнем с демонстрации работы плагина. Кликните мышкой на первой картинке и посмотрите как [...]]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.linkexchanger.su/example_jquery/js/jquery-1.2.6.js" type="text/javascript"></script><script src="http://www.linkexchanger.su/example_jquery/js/jquery.lightbox.js" type="text/javascript"></script></p>
<link href="http://www.linkexchanger.su/example_jquery/lightbox.css" rel="stylesheet" type="text/css" />Давно собирался рассказать об этом плагине к библиотеке jQuery, но вот наконец-то собрался ликвидировать этот пробел. <strong>Плагин jQuery LightBox</strong> пользуется популярностью, и надо сказать вполне заслуженно. Легкий в использовании, гибкий в настройках, что еще нужно организации изящной галереи на сайте?<br />
Давайте, как обычно, начнем с демонстрации работы плагина. Кликните мышкой на первой картинке и посмотрите как работает <strong>jQuery LightBox</strong>.<br />
<font color="#ff0000">Внимание! Эта статья устарела. Новая статья по этой теме:</font> &laquo;<a href="http://www.linkexchanger.su/2009/112.html">Галерея LightBox и ее клоны</a>&laquo;.<br />
<span id="more-65"></span><br />
<a href="http://www.linkexchanger.su/example_jquery/lightbox_img/01.jpg" rel="lightbox-tour" title="Здесь отображается значение атрибута title тэга А в который заключена сама картинка."><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/01m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/02.jpg" rel="lightbox-tour" title="Кто это? Друиды?"><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/02m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/03.jpg" rel="lightbox-tour" title="Розовый фламинго... - кто же это пел?"><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/03m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/04.jpg" rel="lightbox-tour" title="Монахи... Неужто Шао-Линь?"><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/04m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/05.jpg" rel="lightbox-tour" title="Мухтар на границе."><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/05m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/06.jpg" rel="lightbox-tour" title="Эх...."><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/06m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/07.jpg" rel="lightbox-tour" title="Пейзаж однако."><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/07m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><a href="http://www.linkexchanger.su/example_jquery/lightbox_img/08.jpg" rel="lightbox-tour" title="Вот это братки!"><img src="http://www.linkexchanger.su/example_jquery/lightbox_img/08m.jpg" style="border: medium none ; margin: 0pt 2px 2px 0pt" /></a><br />
<script type="text/javascript"> $(document).ready(function(){ 	$("#gallery a").lightbox();     $.Lightbox.construct({     	"speed": 500,     	"show_linkback": true,     	"keys": { 			close:	"q", 			prev:	"z", 			next:	"x" 		}, 		"opacity": 0.3, 		text: { 			image:		"Картинка", 			of:			"из", 			close:		"Закрыть", 			closeInfo:	"Завершить просмотр можно, кликнув мышью вне картинки.", 			help: { 				close:		"Закрыть", 				interact:	"Интерактивная подсказка" 			}, 			about: { 				text: 	"Можно вставить какую-нибудь ссылку", 				title:	"И снабдить ее комментарием...", 				link:	"http://www.linkexchanger.su/2008/65.html" 			} 		}, 		files: { 			images: { 				prev:		"http://www.linkexchanger.su/example_jquery/lightbox_img/prev.gif", 				next:		"http://www.linkexchanger.su/example_jquery/lightbox_img/next.gif", 				blank:		"http://www.linkexchanger.su/example_jquery/lightbox_img/blank.gif", 				loading:	"http://www.linkexchanger.su/example_jquery/lightbox_img/loading.gif" 			} 		}     }); }); </script></p>
<blockquote><p>Откройте <a href="http://www.linkexchanger.su/example_jquery/lightbox.html" target="_blank">пример</a> в отдельном окне и посмотрите исходный код.</p></blockquote>
<p>Итак, что же нужно, чтобы использовать такую галерею на своем сайте?</p>
<p>Нам понадобится библиотека jQuery, конечно же сам плагин <strong>jquery.lightbox.js</strong>, файл стилевого оформления, несколько картинок (вперед, назад, загрузка&#8230;) и фотографии для Вашей галереи, представленные в двух вариантах: миниатюра и полноразмерное изображение.</p>
<blockquote><p>Нужные файлы (включая демонстрационные фото), Вы сможете найти в этом <a href="http://www.linkexchanger.su/example_jquery/lightbox.zip">архиве</a>. Сам плагин <strong>jquery.lightbox.js</strong> и библиотеку jQuery можно найти в разделе <strong><a href="http://www.linkexchanger.su/download">Download</a></strong>.</p></blockquote>
<p>Для начала подключим в разделе HEAD нашей HTML-страницы нужные файлы, конечно же соблюдая пути к ним (у Вас они могут отличаться):</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.2.6.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.lightbox.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;lightbox.css&quot; /&gt;</pre>
<p>Затем займемся размещением в теле HTML-страницы миниатюр. Тут простор для творчества &#8211; размещайте как, где и сколько хотите миниатюр. Вот например:</p>
<pre class="brush: xml;">
&lt;ul&gt;
  &lt;li&gt;
    &lt;a href=&quot;img/01.jpg&quot; rel=&quot;lightbox-tour&quot; title=&quot;1-я&quot;&gt;&lt;img src=&quot;img/01m.jpg&quot; /&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;img/02.jpg&quot; rel=&quot;lightbox-tour&quot; title=&quot;2-я&quot;&gt;&lt;img src=&quot;img/02m.jpg&quot; /&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;img/03.jpg&quot; rel=&quot;lightbox-tour&quot; title=&quot;3-я&quot;&gt;&lt;img src=&quot;img/03m.jpg&quot; /&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;img/04.jpg&quot; rel=&quot;lightbox-tour&quot; title=&quot;4-я&quot;&gt;&lt;img src=&quot;img/04m.jpg&quot; /&gt;&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p>Довольно просто: мы разместили миниатюры в списке (Вы можете избрать другой вариант). Самое главное здесь не список, а то, что мы заключили картинку-миниатюру в тэг А, который ссылается на полноразмерное изображение и имеет атрибут rel со значением lightbox-tour. Вот это действительно важно. Собственно Вы могли бы задать значение lightbox-petya или lightbox-1 для всех фотографий галереи. Здесь важно присутствие ключевого слова lightbox, а разные &laquo;окончания&raquo; всего лишь идентификатор одной группы фотографий &#8211; ведь Вы можете разместить на странице и несколько независимых наборов, которые могут включать в себя от 1 до N (сколько влезет) фотографий. И еще &#8211; содержимое атрибута title &#8211; это описание, прилагаемое при просмотре к полноразмерной фотографии.</p>
<p>Это самый простой и легкий способ использования плагина jQuery LightBox. Есть и еще один, более гибкий способ. Посмотрите код, приведенный ниже. В jQuery-селекторе мы отбираем все элементы А, которые нас интересуют. Но преимущество этого способа даже не в этом, а в том, что тут можно использовать кое-какие опции, которые мы разберем ниже&#8230;</p>
<pre class="brush: jscript;">&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
$(&quot;#selector a&quot;).lightbox();
$.Lightbox.construct({
  &quot;speed&quot;: 700,
  &quot;show_linkback&quot;: true,
  &quot;keys&quot;: {
    close: &quot;q&quot;,
    prev: &quot;z&quot;,
    next: &quot;x&quot;
  },
  &quot;opacity&quot;: 0.7,
  &quot;rel&quot;: box-tour,
  text: {
    image: &quot;Картинка&quot;,
    of: &quot;из&quot;,
    close: &quot;Закрыть&quot;,
    closeInfo: &quot;Клик вне картинки завершит просмотр.&quot;,
    help: {
      close: &quot;Закрыть&quot;,
      interact: &quot;Интерактивная подсказка&quot;
    },
    about: {
      text: &quot;Можно вставить какую-нибудь ссылку&quot;,
      title: &quot;И снабдить ее комментарием...&quot;,
      link: &quot;http://www.linkexchanger.su/2008/65.html&quot;
    }
  }
});
});
&lt;/script&gt;</pre>
<p>Набор опций передается в <strong>$.Lightbox.construct({});</strong>. В общем-то все опции имеют говорящие названия, но раз обещал их пояснить&#8230;<br />
<strong>speed</strong> &#8211; скорость перехода от одной картинки к другой, указывается в миллисекундах.<br />
<strong>show_linkback</strong> &#8211; показывать или не показывать ссылку при просмотре. Принимает значения true/false. По умолчанию true &#8211; показывать.<br />
<strong>opacity</strong> &#8211; прозрачность общего фона при просмотре. Изменяется от 0 до 1. По умолчанию установлено 0.9.<br />
<strong>keys</strong> &#8211; тут можно определить клавиши управления при просмотре. Принимает набор из пар ключ/значение. <strong>close</strong> &#8211; ясное дело закрыть, <strong>prev</strong> &#8211; предыдущая картинка, <strong>next</strong> &#8211; следующая. По умолчанию close:c, prev:p, next:n.<br />
<strong>text</strong> &#8211; тут уж совсем пояснять нечего. Просто посмотрите пример&#8230;</p>
<p>Я привел не все опции &#8211; остальные Вы сможете обнаружить, если откроете файл jquery.lightbox.js и найдете строки 455 &#8211; 520.</p>
<p>Что еще можно натворить с jQuery LightBox, чтобы Ваш экземпляр немного отличался от своих собратьев? Пожалуй немного поковырять стилевое оформление в файле <strong>lightbox.css</strong>. Ну например, чтобы изменить цвет фона с установленного по умолчанию черного на какой-нибудь зеленый, найдите <strong>#lightbox-overlay</strong> и поменяйте <strong>background-color:#0000;</strong> на <strong>background-color:#00ff00;</strong> и так далее&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linkexchanger.su/2008/65.html/feed</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
	</channel>
</rss>

