Как на нативном javascript реализовать swipe?

touch_events.png
Бьюсь над тем что не знаю как вычеслить абсолютно относительный сдвиг(newX,newY):
document.body.addEventLestener("touchmove",function(e){
  if(event.targetTouches.length==1){
    var touch = event.targetTouches[0];
    var x = touch.pageX, y = touch.pageY;
    var newX = ???, newY = ???;
    if(x-newX <= y-newY) ...
  }
},false);

Думал как попробовать решить:
1) из переменных x и y сделать константы(const), а далее устоновить таймер, сравнить с newX и newY. Верно?
  • Вопрос задан
  • 1109 просмотров
Пригласить эксперта
Ответы на вопрос 1
@wimanen
Надо добавить не только touchmove, но и touchstart и touchend.
Если смотреть только по оси Х, то
var touchStart=  -1,
        touchEnd= -1,
        count= 0,
        targetElem= document.getElementById('some_element');

В touchstart функции берем координаты начала движения:
function tStart(e){
          e = e ? e : window.event;
          e = ('changedTouches' in e)?e.changedTouches[0] : e;
          touchStart = e.pageX;
       }

По ходу движения touchmove:
function tMove(e){
          e = e ? e : window.event;
          e = ('changedTouches' in e)?e.changedTouches[0] : e;
          touchEnd = e.pageX - touchStart;
          var _count = count -touchEnd;
          targetElem.style.transform = 'translateX('+(-_count)+'px)';
       }

Ну и в по окончании движения touchend:
function tEnd(e){
          count = count - touchEnd;
          targetElem.style.transform = 'translateX('+(-count)+'px)'; 
       }


Мы берем начальные значения, по ходу движения двигаем по нашей Х оси элемент, по окончании движения "сохраняем результат".

p.s. Не претендую на истину, конечно умные люди и более элегантно может напишут =))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
28 мая 2024, в 08:33
500000 руб./за проект
28 мая 2024, в 07:56
1500 руб./в час
28 мая 2024, в 06:55
400 руб./в час