[javascript] 터치 이벤트를 사용하여 터치한 위치에 따라 이미지를 확대/축소하는 방법은?
다음은 이를 수행하는 간단한 예제 코드입니다.
// HTML 요소를 가져옵니다.
var imageElement = document.getElementById('touchImage');
// 초기 이미지 크기를 설정합니다.
var currentScale = 1;
var lastTouchX, lastTouchY;
// 터치 시작 이벤트 리스너를 추가합니다.
imageElement.addEventListener('touchstart', function(event) {
if (event.touches.length === 1) {
lastTouchX = event.touches[0].clientX;
lastTouchY = event.touches[0].clientY;
}
});
// 터치 이동 이벤트 리스너를 추가합니다.
imageElement.addEventListener('touchmove', function(event) {
if (event.touches.length === 2) {
// 두 손가락으로 터치하는 경우 이미지를 확대 또는 축소합니다.
var currentX = event.touches[0].clientX;
var currentY = event.touches[0].clientY;
var distance = Math.sqrt((currentX - event.touches[1].clientX) ** 2 + (currentY - event.touches[1].clientY) ** 2);
var scaleChange = distance / 100; // 이미지 크기를 조절하기 위한 요인을 계산합니다.
// 이미지를 확대 또는 축소합니다.
if (distance > 10) { // 일정 거리 이상에서만 확대/축소 작업을 수행합니다.
if (currentScale * scaleChange >= 1 && currentScale * scaleChange <= 3) {
currentScale *= scaleChange;
imageElement.style.transform = 'scale(' + currentScale + ')';
}
}
} else if (event.touches.length === 1) {
// 한 손가락으로 터치하는 경우 이미지를 이동합니다.
var touchDeltaX = event.touches[0].clientX - lastTouchX;
var touchDeltaY = event.touches[0].clientY - lastTouchY;
// 이미지의 위치를 조정합니다.
imageElement.style.left = (imageElement.offsetLeft + touchDeltaX) + 'px';
imageElement.style.top = (imageElement.offsetTop + touchDeltaY) + 'px';
lastTouchX = event.touches[0].clientX;
lastTouchY = event.touches[0].clientY;
}
});
// 터치 종료 이벤트 리스너를 추가합니다.
imageElement.addEventListener('touchend', function(event) {
// 작업 완료 후 필요한 정리 작업을 수행합니다.
});
이 예제 코드에서는 touchstart
, touchmove
, touchend
이벤트를 사용하여 이미지를 확대/축소 및 이동시키는 방법을 보여주고 있습니다. 위 코드를 참고하여 원하는 방식으로 이미지를 조작하는 기능을 추가할 수 있습니다.
더 자세한 내용은 MDN Web Docs에서 터치 이벤트에 관한 자세한 정보를 확인할 수 있습니다.