모션

짧고 예측 가능한 전환으로 상태 변화와 공간 이동을 설명합니다.

목적

모션은 상태 변화와 공간 이동의 관계를 설명합니다. 장식적인 움직임보다 짧고 예측 가능한 피드백을 우선하며, focus 이동이나 Escape 처리, 접근 가능한 상태 변경을 지연하지 않습니다.

Duration

Easing

motion/easing/standardcubic-bezier(0.2, 0, 0, 1)입니다. 공간을 이동하는 transform에 duration과 함께 사용해 일관된 가속과 감속을 유지합니다.

transition:
  transform var(--hds-motion-duration-medium)
  var(--hds-motion-easing-standard);

생성된 단계

아래 specimen은 자동으로 반복되지 않습니다. 각 영역에 마우스를 올리거나 키보드 focus를 이동할 때만 fast와 medium duration을 비교할 수 있습니다.

motion/duration/fast120ms
motion/duration/medium200ms
motion/easing/standardcubic-bezier(0.2, 0, 0, 1)

두 duration specimen은 이 표준 easing 곡선을 사용합니다.

color/bg/scrimrgba(15, 23, 42, 0.56)
배경 콘텐츠Modal scrim

Reduced motion

prefers-reduced-motion: reduce에서는 필수적이지 않은 transform과 transition을 제거합니다. 닫기 완료는 즉시 처리하고, focus 배치, Escape 처리, 접근 가능한 상태 변경은 모션 시간에 의존하지 않게 만듭니다.

@media (prefers-reduced-motion: reduce) {
  .moving-surface {
    transition: none;
    transform: none;
  }
}

Scrim

모달 backdrop에는 semantic token인 color/bg/scrim을 사용합니다. 이 토큰은 rgba(15, 23, 42, 0.56)으로 resolve되며, 제품 CSS에서 원시 color/neutral/900-alpha-56 값을 직접 참조하지 않습니다. scrim은 뒤 콘텐츠와 현재 modal surface를 구분하지만 focus 이동이나 닫기 동작을 대신하지 않습니다.

background: var(--hds-color-bg-scrim);