Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
www.productengineer.info
프론트엔드 엔지니어에게 애니메이션은
깊게 들어갈수록 쉽지 않은 주제인것 같아요.
최근 사용자가 텍스트 입력시 길이가 길어져서
허용된 width 보다 넘치면, 자동으로 텍스트 크기가 작아지는
오토 스케일링 애니메이션을 구현해 보았어요.
가장 처음 떠오른 것은 transform: scale() 이었어요.
javascript 로 크기를 조정하는 것과 다르게
transform 은 새로운 레이어에서 렌더링 된 후 컴포지션 해서요.
(그 과정에서, 브라우저가 GPU 를 활용해서 성능이 최적화 되어서요.)
구체적인 구현 방법도 고민했어요.
useLayoutEffect 를 활용해서 container element 의 width 와
허용된 width 보다 넘치는 inline element 의 렌더링된 width를 저장해두고
각 width 를 비교해서 scale 비율을 계산했어요.
이를 허용된 width 보다 넘치는 inline element 에 적용하기 위해
container element 에 transform: scale({scale}) 을 입혔더니
성공이었어요 🎉
다만 주의할 점은, 사용자가 텍스트를 빠르게 입력하면
가로 스크롤이 발생하는 경우 였어요.
텍스트에 적용된 추가적인 애니메이션이 영향을 준것 같아서
container 의 상위 태그에서 overflow: hidden 을 주어
스크롤 발생을 막았어요 :)
애니메이션의 세계는 넓고도 깊은 것 같아요.
그래도 마지막에 동작하는걸 보니 뿌듯한 마음이 들었어요 🤩
여러분은 최근에 어떤 애니메이션을 구현 하셨나요??
복잡한 애니메이션을 구현하는 노하우가 있으신가요?
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 8월 17일 오후 12:25
Web animation api 기반의 Ionic animation 기능을 사용해서 홈화면에 들어가는 인터렉티브 UI를 구현한 적이 있어요. 자바스크립트로 동적으로 제어할 수 있어서 애플리케이션의 UI 애니메이션 끄고 키는 설정도 구현할 수 있고, 애니메이션 코드를 한 곳에 모아둘 수 있어서 조건부 렌더링이나 클래스 바인딩을 사용하는 것보다 가독성도 좋게 느껴졌어요ㅎㅎ
@이소연 오우 Web animation api 는 비교적 최신 기술이네요 ㅎㅎㅎ 이런 장점이 있군요 알려주셔서 감사해요 :)
저에게 있어서는 손님의 요구사항에 부합한 창조물을 설계하는게 참 어려운것 같아요 이게 애니메이션에 국한된 얘기가 아니다보니.. 저에게 있어서 애니메이션은 그저 언제든지 고객의 요구사항을 구현할 수 있도록 코딩 실력을 길러야 하는 한가지 종목일 뿐이네요
@유하영지금처럼 열심히 하시다보면 모든 분야에서 조금씩 실력이 길러지는 것 같아요 ㅎㅎ 저도 요즘도 열심히 공부하고 있어요..!
Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자로" 강의를
... 더 보기공식적으로 뭐하는 회사인지는 모르지만 일단 100억달러 기업가치
... 더 보기Cursor와 함께라면, 더이상 에디터는 단순한 입력 도구가 아닌
... 더 보기