Как сделать скролл пальцем на увеличенном фото в fancybox
Поведенческий фактор показывает, что люди, которые просматривают сайты с мобильных устройств и планшетов привыкли перелистывать изображения путем скролла(выражаясь техническим термином, использовать «swipe»). Swipe позволяет перелистывать «страницы» привычным движением пальца, а не щелкать по стрелкам «лево» «право», которые на мобильных устройствах не такие уж и удобные.
Так как по умолчанию в OkayCMS и Simpla CMS встроен скрипт fancybox, который не поддерживает по умолчанию функцию «Swipe» это может быть полезным для Вашего сайта, особенно если он адаптивный.
Приступим к установке:
Первый шаг, это подключение библиотеки, которая поддерживает технологию Swipe
Для этого найдите подключение скрипта fancybox(обычно файл index.tpl) и выполните следующее:
После строки:
<script type="text/javascript" src="js/fancybox/jquery.fancybox.pack.js"></script> {*это подключение скрипта на сайте*}
Добавьте новый код:
<script type="text/javascript" src="js/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
<script type="text/javascript" src="js/fancybox/jquery.touchSwipe.js"></script>
После этого приступаем ко второму шагу и выполняем настройку скрипта, для этого найдите вызов функции fancybox( может находиться в файле по адресу design/название темы/html/product.tpl или же в одном из скриптов в папке design/js ) :
//Зум картинок
$("a.zoom").fancybox({
prevEffect : 'fade',
nextEffect : 'fade'
});
И замените эту часть кода на вот эту:
$("a.zoom").fancybox({
prevEffect : 'fade',
nextEffect : 'fade',
helpers : {
thumbs : {
width : 50,
height : 50
}
},
beforeShow: function () {
var imgAlt = $(this.element).find("img").attr("alt");
if (imgAlt) {
$(".fancybox-image").attr("alt", imgAlt);
}
},
afterShow: function() {
$('.fancybox-wrap').swipe({
swipe : function(event, direction) {
if (direction === 'left' || direction === 'up') {
$.fancybox.prev( direction );
} else {
$.fancybox.next( direction );
}
}
});
}
});
Из конструкции
if (direction === 'left' || direction === 'up') {
$.fancybox.prev( direction );
} else {
$.fancybox.next( direction );
}
Следует что при движении влево и вверх, будет показываться предыдущее изображение, то есть перелистывание влево, а при движениях вниз и вправо – перелистывание вправо.
Спасибо за внимание! В случае вопросов обращайтесь к нам.
