제스처 애니메이션: 가리키기, 누르기와 끌기
whileHover, whileTap, drag 속성을 사용해 사용자 제스처에 따라 컴포넌트를 애니메이션 처리합니다.
제스처 애니메이션: 가리키기, 누르기와 끌기은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
제스처 속성 개요
Framer Motion의 제스처 속성은 JavaScript 이벤트 처리기 없이도 사용자 입력에 반응하여 구성 요소를 애니메이션합니다. 주요 속성은 whileHover, whileTap, whileDrag, whileFocus입니다.
whileHover
커서가 요소 위에 있는 동안의 애니메이션 상태를 정의합니다. 커서가 벗어나면 자동으로 되돌아갑니다.
<motion.button
whileHover={{ scale: 1.05, boxShadow: '0 10px 30px rgba(0,0,0,0.15)' }}
transition={{ type: 'spring', stiffness: 400, damping: 17 }}
>
Hover me
</motion.button>whileTap
요소를 누르고 있는 동안의 애니메이션 상태를 정의합니다. 버튼 누름 피드백에 적합합니다.
<motion.button
whileHover={{ scale: 1.05 }}
whileTap={{ scale: 0.95 }}
>
Click
</motion.button>whileFocus
요소가 키보드 포커스를 받으면 애니메이션을 실행하므로 접근성 높은 포커스 표시기에 적합합니다.
<motion.input
whileFocus={{ borderColor: '#4f46e5', boxShadow: '0 0 0 3px rgba(79,70,229,0.3)' }}
transition={{ duration: 0.2 }}
/>드래그 활성화
요소를 드래그할 수 있게 하려면 drag 속성을 추가하십시오. 축을 제한하려면 true, 'x', 또는 'y'로 설정하십시오.
<motion.div
drag
dragConstraints={{ left: -100, right: 100, top: -100, bottom: 100 }}
whileDrag={{ scale: 1.1, cursor: 'grabbing' }}
style={{ cursor: 'grab' }}
>
Drag me
</motion.div>참조를 사용한 dragConstraints
픽셀 값 대신 참조를 사용해 컨테이너 요소 안으로 드래그를 제한하십시오. 드래그할 수 있는 요소가 컨테이너 밖으로 나갈 수 없습니다.
const constraintsRef = useRef(null);
<div ref={constraintsRef} style={{ overflow: 'hidden', width: 300, height: 300 }}>
<motion.div
drag
dragConstraints={constraintsRef}
style={{ width: 80, height: 80, background: '#4f46e5' }}
/>
</div>dragElastic
dragElastic은 요소가 제한 범위를 넘어 얼마나 더 드래그될 수 있는지 제어합니다(0 = 탄성 없음, 1 = 최대 탄성).
<motion.div
drag
dragConstraints={{ left: 0, right: 0, top: 0, bottom: 0 }}
dragElastic={0.2} // slight rubber-band effect
/>dragSnapToOrigin
dragSnapToOrigin을 설정하면 요소를 놓을 때 원래 위치로 스프링처럼 돌아갑니다.
<motion.div
drag
dragSnapToOrigin
dragElastic={0.5}
style={{ width: 60, height: 60, background: '#e11d48', borderRadius: '50%' }}
/>팬 이벤트
전체 드래그 모드를 활성화하지 않고 팬 제스처 중 커서 위치를 추적하려면 onPanStart, onPan, onPanEnd를 사용하십시오.
<motion.div
onPan={(event, info) => {
console.log('Point:', info.point.x, info.point.y);
console.log('Delta:', info.delta.x, info.delta.y);
}}
/>드래그 이벤트
드래그 수명 주기 이벤트를 수신하십시오: onDragStart, onDrag, onDragEnd. info 객체에는 속도와 오프셋이 포함됩니다.
<motion.div
drag="x"
onDragEnd={(event, info) => {
if (info.velocity.x > 500) onSwipeRight();
if (info.velocity.x < -500) onSwipeLeft();
}}
/>카드 스와이프 패턴
드래그 속도를 사용해 놓을 때 스와이프 방향을 감지하면 Tinder 스타일의 스와이프를 구현할 수 있습니다.
function SwipeCard({ onSwipe }) {
return (
<motion.div
drag="x"
dragConstraints={{ left: 0, right: 0 }}
dragElastic={0.7}
onDragEnd={(_, info) => {
if (Math.abs(info.velocity.x) > 400) {
onSwipe(info.velocity.x > 0 ? 'right' : 'left');
}
}}
/>
);
}빠른 확인
드래그한 요소를 놓을 때 원래 위치로 되돌아가게 하는 Framer Motion 속성은 무엇입니까?
복습
상호 작용 상태 애니메이션에는 whileHover, whileTap, whileFocus를 사용하십시오. 드래그 가능한 요소에는 drag를 추가하고 dragConstraints로 제한하며, 스와이프를 감지하려면 onDragEnd의 속도를 사용하십시오.
자주 묻는 질문
“제스처 애니메이션: 가리키기, 누르기와 끌기” 강의는 무료인가요?
네 — “제스처 애니메이션: 가리키기, 누르기와 끌기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“제스처 애니메이션: 가리키기, 누르기와 끌기”에서 뭘 배우나요?
whileHover, whileTap, drag 속성을 사용해 사용자 제스처에 따라 컴포넌트를 애니메이션 처리합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
React Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“제스처 애니메이션: 가리키기, 누르기와 끌기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 모션 컴포넌트와 기본 애니메이션
- 조율된 애니메이션을 위한 변형
- 제스처 애니메이션: 가리키기, 누르기와 끌기
- 레이아웃 애니메이션과 AnimatePresence