Направление движения свайпа

120
29 декабря 2021, 07:10

Я начал делать меню, чтобы при свайпе влево, открывалось меню, а при свайпе вправо закрывалось. Но я не понимаю, как мне определять продолжительность свайпа и направление движения. Я нашёл свойство timeStamp, я думаю это как-то связано со временем, но оно выдаёт непонятные цифры, не понимаю что они значат. Подскажите

document.addEventListener('touchmove', (event) => { 
	console.log(event); 
});

Answer 1

Так?

let x = null; 
document.addEventListener('touchstart', e => x = e.touches[0].clientX); 
document.addEventListener('touchmove', e => { 
    if (!x) return; 
    x = x - e.touches[0].clientX < 0 ? 0 : -90; 
    test.style.transform = `translate(${x}%,0)`; 
    x = null; 
});
#test { 
  transition: 0.5s; 
  position: fixed; 
  top: 0px; 
  left: 0px; 
  width: 150px; 
  height: 100px; 
  background: wheat; 
  text-align: center; 
}
<div id="test">menu example<br>swipe left to hide</div>

Answer 2

Версия для PCшников

зажать и потащить

let lastPos; 
let menu = document.querySelector(".menu"); 
 
window.addEventListener("mousedown", e => { 
  lastPos = e.clientX; 
  window.addEventListener("mousemove", showMenu); 
}); 
 
function showMenu(e){ 
  if(event.buttons == 0){ 
    window.removeEventListener("mousemove", showMenu); 
  }else { 
    menu.style.width = (e.clientX > lastPos) ? "100px" : "0px"; 
  } 
}
.menu{ 
  position: absolute; 
  top: 0; 
  left: 0; 
  width: 0px; 
  height: 300px; 
  background-color: cyan; 
  transition: all 1s; 
}
<div class="menu"> 
</div>

READ ALSO
Достать геоданные асинхронно

Достать геоданные асинхронно

есть фрагмент кода, который возвращает геоданные пользователя(широта, долгота) в таком варианте:

216
Uncaught TypeError: Cannot read property &#39;checked&#39; of undefined [закрыт]

Uncaught TypeError: Cannot read property 'checked' of undefined [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

178
Способы работы со строками

Способы работы со строками

Написать функцию, которая принимает двузначное число и возвращает его в текстовом виде

181