transform-origin 은 요소를 움직이지 않습니다 — 그 요소가 회전·확대될 때 어느 점이 고정축이 되는지만 바꿉니다. 값은 자기 자신의 박스를 기준으로 한 %·px·키워드(top left 등)이고, 3D 변환에는 z 값도 세 번째로 줄 수 있습니다.
데모의 점은 지금 축으로 쓰이는 위치를 그대로 표시합니다. 축이 모서리(0% 0%)에 있으면 요소가 그 모서리를 중심으로 크게 휘돌고, 중앙(50% 50%)이면 제자리에서 팽이처럼 돕니다.
가장 자주 겪는 착각은 "요소를 옮기는 속성"으로 오해하는 것입니다 — transform-origin 만 바꾸면 화면상 위치는 그대로고, 그 다음에 실행되는 rotate/scale 의 궤적만 달라집니다. 메뉴가 트리거 버튼 모서리에서 펼쳐지는 애니메이션, 아코디언이 위쪽을 축으로 펼쳐지는 애니메이션이 전형적인 활용입니다.
언제 쓰나
메뉴·툴팁이 트리거 버튼 쪽에서 자라나듯 열리게 하거나, 아코디언이 위쪽을 축으로 펼쳐지게 할 때 씁니다.