[javascript] 자바스크립트와 GreenSock을 이용한 드래그 앤 드롭 효과를 사용한 슬라이더 제작 방법

이번 글에서는 자바스크립트와 GreenSock을 이용하여 드래그 앤 드롭 효과를 갖춘 슬라이더를 제작하는 방법에 대해 알아보겠습니다.

목차

요구사항

이 슬라이더의 요구사항은 다음과 같습니다.

  1. 사용자는 슬라이더를 마우스로 드래그하여 이동할 수 있어야 합니다.
  2. 드래그 동작이 자연스러워야 하며, 애니메이션 효과가 있어야 합니다.

HTML 구조

먼저, 슬라이더를 위한 HTML 구조를 만듭니다.

<div class="slider">
  <div class="slider-track">
    <div class="slider-handle"></div>
  </div>
</div>

이 구조는 슬라이더를 감싸는 .slider 요소와 드래그할 수 있는 .slider-handle 요소를 포함합니다.

CSS 스타일링

다음으로, 슬라이더를 스타일링합니다. 여기서는 단순히 스타일을 추가하고 전반적인 레이아웃을 설정합니다. 자세한 스타일링은 필요에 따라 추가할 수 있습니다.

.slider {
  width: 500px;
  height: 20px;
  background-color: #ccc;
  position: relative;
}

.slider-track {
  width: 100%;
  height: 100%;
  background-color: #555;
}

.slider-handle {
  width: 20px;
  height: 20px;
  background-color: #f00;
  position: absolute;
}

자바스크립트 코드

이제 드래그 앤 드롭 효과를 구현하기 위해 자바스크립트와 GreenSock(TweenMax)를 사용합니다.

const handle = document.querySelector('.slider-handle');
const track = document.querySelector('.slider-track');

let isDragging = false;
let startX = 0;
let startLeft = 0;

handle.addEventListener('mousedown', (e) => {
  isDragging = true;
  startX = e.clientX;
  startLeft = parseInt(window.getComputedStyle(handle).getPropertyValue('left'));
  e.preventDefault();
});

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  const diffX = e.clientX - startX;
  const newLeft = startLeft + diffX;
  handle.style.left = newLeft + 'px';
});

document.addEventListener('mouseup', () => {
  isDragging = false;
});

// 애니메이션 효과를 위해 GreenSock 사용
function animateSlider(duration) {
  gsap.to(handle, duration, { left: '100%' });
}

animateSlider(2); // 2초 동안 슬라이더를 오른쪽 끝으로 이동

이 코드는 드래그 앤 드롭 동작을 처리하는 부분과 GreenSock을 이용한 슬라이더 애니메이션 처리를 위한 코드입니다.

결론

이렇게 자바스크립트와 GreenSock을 이용하여 드래그 앤 드롭 효과를 갖춘 슬라이더를 제작할 수 있습니다. 이를 응용하여 더 다양한 슬라이더를 만들어보세요.

참고 자료