1. 컨트롤러 구조 및 생명주기 관리
-
connect()와disconnect()메서드를 통해 애니메이션 루프의 시작과 종료를 제어하며, 컨트롤러 제거 시 DOM 요소를 깨끗이 정리하는meltSnow로직을 포함합니다. -
requestAnimationFrame을 사용하여 탭이 비활성화될 때 애니메이션을 자동 중지함으로써 리소스를 최적화합니다.
2. 눈송이 생성 및 물리 시스템
-
각 눈송이는 ❄️ 이모지를 담은
div요소로 생성되며,dataset을 통해 낙하 속도(velocityY), 횡이동(velocityX), 회전 속도 등의 물리 데이터를 개별적으로 관리합니다. -
isolation: isolate속성을 적용하여 페이지의 기존 텍스트 선택이나 클릭 이벤트와 간섭이 발생하지 않도록 설계되었습니다.
3. 적설량 및 인터랙션 구현
-
눈송이가 뷰포트 하단에 도달하면
settled상태로 전환되어 바닥에 고정되며, 누적된 높이(accumulatedHeight)만큼 다음 눈송이가 쌓이는 위치가 높아집니다. -
마우스 왼쪽 버튼 클릭 시 커서를 빗자루(🧹) 모양의 SVG로 변경하고, 피타고라스 정리를 이용한 거리 계산으로 특정 반경 내의 눈송이를 제거하는 기능을 제공합니다.