var start = 0;
var drag = false;
document.querySelector('.slide-container').addEvenetListener('mousedown', function(e) {
drag = true;
console.log(e.clientX); // 마우스 클릭한 위치 좌표
start = e.clientX;
});
document.querySelector('.slide-container').addEventListener('mousemove', function(e) {
if ( drag ) {
console.log(e.clientX); // 이동하며 변하는 마우스 위치 좌표
console.log(e.clientX - start); // 마우스 이동 거리
}
});
document.querySelector('.slide_container').addEventListener('mouseup', function(e) {
drag = false;
console.log(e.clientX); // 마우스 클릭 후 뗄 때 위치 좌표
console.log(e.clientX - start); // 마우스 최종 이동 거리
});
document.querySelector('.slide-container').addEventListener('touchstart', function(e) {
console.log(e.touches[0].clientX); // 처음 터치한 좌표
});
document.querySelector('.slide-container').addEventListener('touchmove', function(e) {
console.log(e.touches[0].clientX); // 처음 터치의 이동 좌표
});
document.querySelector('.slide-container').addEventListener('touchend', function(e) {
console.log(e.changedTouches[0].clientX); // 터치 뗄 때 좌표
});
<div style="overflow: hidden;">
<div class="slide-container">
<div class="slide-box">
<img src="/img/car1.png" draggable="false">
</div>
<div class="slide-box">
<img src="/img/car2.png" draggable="false">
</div>
<div class="slide-box">
<img src="/img/car3.png" draggable="false">
</div>
</div>
</div>
var drag_start = 0;
var drag_dist = 0;
var drag = false;
var slide_width = slide_container.clientWidth / 3;
slide_container.addEventListener('mousedown', function(e) {
drag = true;
drag_start = e.clientX;
slide_container.style.transition = 'none';
});
slide_container.addEventListener('mousemove', function(e) {
if ( drag ) {
drag_dist = e.clientX - drag_start;
slide_container.style.transform = `translateX(${drag_dist - (slide_width * (slide_num - 1))}px)`;
};
});
slide_container.addEventListener('mouseup', function(e) {
drag = false;
slide_container.style.transition = 'all 0.5s';
if ( drag_dist < -250 && drag_dist < 0 ) {
slide_next();
} else if ( drag_dist >= -250 && drag_dist < 0 ) {
slide_container.style.transform = `translateX(-${(slide_num - 1)}00vw)`;
} else if ( drag_dist > 250 && drag_dist > 0 ) {
slide_prev();
}
});
html image drage
이미지 넘겨 주기 위한 transform: translateX() 적용
슬라이드 너비의 변화 & 단위
mousemove 와 transition