В вебе существуют проверенные опытом и временем инструменты. Бывает так, что в таком инструменте не хватает какой-то детали, что тогда делать? Можно попробовать найти новый, но не всегда есть время на поиск, сравнение и изучение.
Один из таких инструментов Fancybox. Замечательный скрипт для он-лайн галереи.
Понадобилось мне недавно сделать такую штуку: на веб-странице есть несколько галерей, по клику на галерею открывается fancybox и показывает изображения этой гелереи. Изображение подгоняется под размеры браузера. Все это fancybox прекрасно умеет делать.
Но одну штуку он сделать не смог: при наведении мыши на изображение оно должно масштабироваться до своих реальных размеров (если оно было уменьшено), зум ей нужен. Но fancybox зумить не умеет.
Пришлось мне искать замену fancybox-у. Ничего подходящего за час я не нашел, и подумал о скриптах которые можно использовать совместно с fancybox и jquery. Мне подошел скрипт cloud-zoom. С таким названием он просто обязан быть мастером цифрового зума. Использование довольно простое: его вызов подвешивается на событие "onComplete" fancybox-а. И когда fancybox загрузил картинку, cloud-zoom может приступать к своим обязанностям, а именно к зуму.
Вот готовый код:
Все интересное находится в этих строках:
arg[cur] это картинка галереи, которую fancybox показывает в данный момент, а cloud-zoom должен её масштабировать принаведении курсора.
Вроде бы все просто, но если у кого-нибудь есть вопросы - не стесняйтесь, спрашивайте.
Один из таких инструментов Fancybox. Замечательный скрипт для он-лайн галереи.
Понадобилось мне недавно сделать такую штуку: на веб-странице есть несколько галерей, по клику на галерею открывается fancybox и показывает изображения этой гелереи. Изображение подгоняется под размеры браузера. Все это fancybox прекрасно умеет делать.
Но одну штуку он сделать не смог: при наведении мыши на изображение оно должно масштабироваться до своих реальных размеров (если оно было уменьшено), зум ей нужен. Но fancybox зумить не умеет.
Пришлось мне искать замену fancybox-у. Ничего подходящего за час я не нашел, и подумал о скриптах которые можно использовать совместно с fancybox и jquery. Мне подошел скрипт cloud-zoom. С таким названием он просто обязан быть мастером цифрового зума. Использование довольно простое: его вызов подвешивается на событие "onComplete" fancybox-а. И когда fancybox загрузил картинку, cloud-zoom может приступать к своим обязанностям, а именно к зуму.
Вот готовый код:
$(document).ready(function () { $("a.catalog_group").fancybox({ 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'speedIn': 600, 'speedOut': 200, 'overlayShow': true, 'overlayColor': '#000', 'onComplete': function (arg, cur) { $('#fancybox-img').wrap( $('<a>') .attr('href', $(arg[cur]).attr('href')) .addClass('cloud-zoom') .attr('rel', "position: 'inside'") ); $('.cloud-zoom').CloudZoom(); } }); });
Все интересное находится в этих строках:
'onComplete': function (arg, cur) { $('#fancybox-img').wrap( $('<a>') .attr('href', $(arg[cur]).attr('href')) .addClass('cloud-zoom') .attr('rel', "position: 'inside'") ); $('.cloud-zoom').CloudZoom(); }
arg[cur] это картинка галереи, которую fancybox показывает в данный момент, а cloud-zoom должен её масштабировать принаведении курсора.
Вроде бы все просто, но если у кого-нибудь есть вопросы - не стесняйтесь, спрашивайте.
Вы писали
ОтветитьУдалить"на веб-странице есть НЕСКОЛЬКО галерей, по клику на галерею открывается fancybox и показывает изображения ЭТОЙ гелереи."
от этого вопрос: как сделать в fancybox несколько галерей на одной странице чтобы при перелистовании одна не переходила в другую.
Заранее спасибо
Используйте разные значения атрибута rel
УдалитьИзвините не заметил вопроса вовремя. leadmonkey полностью прав, нужно использовать rel
ОтветитьУдалитьСпасибо за качественно описанную идею.
ОтветитьУдалитьCloudZoom платный, но аналогично смог подключить JQzoom.
http://www.mind-projects.it/projects/jqzoom/index.php#download_section
$(".fancybox").fancybox({
"onComplete": function (arg, cur) {
$("#fancybox-img").wrap(
$("< a >")
.attr("href", $(arg[cur]).attr("href"))
.addClass("jqzoom")
.attr("rel", "position: 'inside'")
);
$(".jqzoom").jqzoom({
zoomType: "innerzoom",
title: false,
lens: false,
showEffect: "fadein",
hideEffect: "fadeout"
});