Communitygithub.com

모션

웹 UI에 애니메이션과 트랜지션을 추가, 검토 또는 수정할 때 사용합니다. 호버 및 프레스 피드백, 모달, 드롭다운, 토스트, 페이지 및 스크롤 리빌, 스프링, 이징, 지속 시간을 다룹니다. 애니메이션 적용 여부를 결정하고, 방법을 정하며, 축소 모션을 지원합니다.

모션란 무엇인가요?

모션 스킬은 웹 UI에서 애니메이션과 트랜지션을 체계적으로 추가, 검토 및 수정하기 위한 가이드입니다. 이 스킬은 애니메이션이 사용자에게 변화를 설명하고 입력을 확인하는 목적을 가져야 하며, 단순한 장식이 되어서는 안 된다는 핵심 원칙을 강조합니다. 스킬은 애니메이션 적용 여부를 결정하는 5단계 프로세스(사용 빈도 기반), 이징(easing) 및 지속 시간(duration)에 대한 구체적인 규칙, transform과 opacity만 애니메이션하도록 제한하는 크래프트 규칙, 그리고 prefers-reduced-motion 미디어 쿼리를 활용한 축소 모션 지원을 포함합니다. 또한 스프링 애니메이션, 지연 시간, 스태거링, 스크롤 리빌 등에 대한 세부 지침을 제공하며, 리뷰 시 이슈별로 Before/After/Why 표를 작성하도록 권장합니다. 이 스킬은 CSS 전환, @starting-style, View Transitions API, Framer Motion, React Spring 등 다양한 플랫폼에서 사용할 수 있도록 설계되었습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/F0rger123/CLAUDE-DESIGN-GOD-MODE/tree/main/skills/motion

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

모션은(는) 무엇을 하나요?

모션은 변화를 설명하고 입력을 확인합니다. 둘 중 하나도 하지 않는다면 장식이며 이유가 필요합니다.

1. 애니메이션을 적용해야 하는가?

사용자가 보는 빈도결정
하루 100회 이상 (단축키, 팔레트 전환, 타이핑)절대 애니메이션 없음
수십 회 (호버, 리스트 탐색, 탭)아주 작게 또는 없음 (150ms 미만의 색상/불투명도)
가끔 (모달, 드로어, 토스트, 드롭다운)표준 트랜지션
드물게 (온보딩, 성공, 첫 방문 히어로)즐거움을 위한 여유

키보드로 트리거된 동작에는 절대 애니메이션을 적용하지 마십시오.

2. 이징 (Easing)

  • 들어오거나 나갈 때: 강한 ease-out cubic-bezier(.23, 1, .32, 1).
  • 화면에서 움직일 때: ease-in-out cubic-bezier(.77, 0, .175, 1).
  • 드로어/시트: cubic-bezier(.32, .72, 0, 1).
  • 색상/호버: ease. 지속적인 움직임 (마키, 진행률): linear.
  • UI에는 절대 ease-in을 사용하지 마십시오. 사용자가 보고 있는 순간에 지연되는 느낌을 줍니다.

3. 지속 시간 (Duration)

누름 100-160ms · 툴팁 125-200ms · 드롭다운 150-250ms · 모달/드로어 200-400ms · 마케팅 히어로 최대 800ms. 종료는 입장보다 약 20% 더 빠릅니다. UI 모션은 300ms 미만으로 유지합니다.

4. 크래프트 규칙

  • transform과 opacity만 애니메이션합니다. 절대 width, height, top, left 또는 transition: all를 사용하지 마십시오.
  • scale(0)에서 나타나는 것은 없습니다. scale(.95) + opacity: 0에서 시작하십시오.
  • 팝오버와 메뉴는 트리거에서 확장됩니다 (transform-origin을 트리거에 설정). 모달은 중앙에 유지됩니다.
  • 버튼: :active { transform: scale(.97) } (120ms 트랜지션 적용).
  • 툴팁: 첫 번째는 지연(~400ms)시키고, 인접한 것은 즉시 엽니다.
  • 리스트를 아이템당 30-50ms씩 스태거링하며, 총합을 400ms 미만으로 제한합니다.
  • 스크롤 리빌: 페이지당 최대 한 번, 작은 거리(8-16px), 한 번만 실행합니다. 모든 섹션에 적용하지 마십시오.
  • 스프링 (Motion/Framer, React Spring): 드래그, 제스처 및 중단 가능한 움직임에 사용: { type: "spring", duration: .4, bounce: .15 }. 바운스는 0.1-0.3으로 유지하고, 재미있는 표면에만 사용하십시오.
  • 단순한 입장/퇴장에는 CSS 트랜지션과 @starting-style을 선호하고, 페이지/상태 변형에는 View Transitions API를, 제스처나 시퀀스가 필요할 때만 JS 라이브러리를 사용하십시오.

5. 축소 모션 (필수)

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

불투명도 변경과 상태 색상은 유지하고, 움직임, 시차 및 흔들림은 제거합니다.

리뷰 형식

모션 코드를 리뷰할 때는 표로 답변하십시오: | Before | After | Why |, 이슈당 한 행씩.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬