а в чём сложность самому написать? у нас блок с overflow:hidden. Внутри картинка. Это во-первых - не делай через background-image - это неправильно. Правильно зарусовать в блок картинку, а на картинку написать несколько коллбэков. 1) ontouchstart - хватать оффсеты картинки и передавать в transform: translate(). 2) По ontouchmove следить на позицией курсора и обновлять transform: translate().
Я писал что-то подобное на одном проекте, постараюсь найти и сделать UPD
Нашёл. Но тут ещё и scale есть, так как я делал приближалку для галереи - оно почти одинаково реализуется. Он тебе не нужен. Я выделнул кусок из своей галереи, так что просто установить чтоб сразу работал не выйдет - переопредели переменные.
var swipeStart = 0,
swipeEnd = 0,
imagePosLeft = 0;
var startCoordX = 0, startCoordY = 0, currentCoordX = 0, currentCoordY = 0, translateX = 0, translateY = 0;
var scale = 2.5,
translate = { x: 0, y: 0 },
startCoords,
currentCoords;
console.log(image);
var updateImgTransform = function (withScale) {
var translateX = currentCoords.x - startCoords.x + translate.x,
translateY = currentCoords.y - startCoords.y + translate.y;
if (withScale) {
image.css({"transform":"scale(" + scale + ") translate(" + translateX / scale + "px, " + translateY / scale + "px)"});
} else {
image.css({"transform":"translate(" + translateX + "px, " + translateY + "px)"});
}
};
var ontouchstart = function (e) {
startCoords = currentCoords = {
x: e.originalEvent.touches[0].clientX,
y: e.originalEvent.touches[0].clientY
};
updateImgTransform(true);
image.on("touchmove", ontouchmove);
image.on("touchend", ontouchend);
};
var ontouchmove = function (e) {
image.addClass('looped');
currentCoords = {
x: e.originalEvent.touches[0].clientX,
y: e.originalEvent.touches[0].clientY
};
updateImgTransform(true);
};
var ontouchend = function (e) {
updateImgTransform(true);
translate.x += currentCoords.x - startCoords.x;
translate.y += currentCoords.y - startCoords.y;
image.off("touchmove", ontouchmove);
image.off("touchend", ontouchend);
};
image.on("touchstart", ontouchstart);