처음 메뉴를 열 때 부드럽게 느껴집니다. 아마도 패널 요소가 아직 로딩되지 않았기 때문인 것 같습니다. 처음 열 때 상단에 스핀너 로더가 표시됩니다. 이 동작은 좋은 것 같고, 항상 열릴 때 스핀너 로더를 사용하는 것도 괜찮을 것 같습니다.
이후 열기 동작은 애니메이션 없이 이루어집니다. 닫기 동작은 랜덤하게 작동합니다(가끔은 부드럽고, 가끔은 버벅입니다).
메뉴가 열린 상태에서 외부 영역을 클릭하면 보통 패널 메뉴 버튼들이 버벅입니다. 하지만 그것들이 먼저 슬라이드 아웃되는 것 같습니다 아마도 전체 메뉴 패널이 reverse-row에 있고, 닫힐 때 클래스가 완전히 슬라이드 아웃되기 전에 제거되어 다시 row로 변경되기 때문일까요?
수정: 그것은 메뉴 패널 버튼(탭)이 아니라 알림 앞의 아이콘들입니다. 하지만 보통 그 라인에서 버벅이며 나타납니다.
제가 파악한 바로는, 여기서 느껴지는 "뻑뻑함"은 애니메이션 자체 때문이 아니라 헤더의 재렌더링(re-rendering) 때문입니다.
제가 새로 도입한 것 중 새로운 느림의 인상을 줄 수 있는 것은 슬라이드 아웃 애니메이션입니다(이 애니메이션은 새 헤더를 리팩토링할 때 실수로 제거되었습니다).
애니메이션과 위젯 메뉴가 수행하는 재렌더링 작업 사이에 setTimeout으로 여유 시간을 주면 훨씬 부드럽게 동작하는 것 같으니, 느린 것이 애니메이션 자체는 아닌 것 같습니다. 따라서 제 추측은 열기/닫기 시 사이트 헤더를 재렌더링하는 주변 작업 때문이라는 것입니다.
실제로 Firefox의 애니메이션 종료 Promise 처리가 애니메이션이 완전히 그려진(painted) 후에 트리거되는지 궁금합니다(원래 변경 사항을 코딩할 때는 그렇게 가정했습니다). 이는 Chrome보다 Firefox가 더 부드럽게 보이는 이유를 설명할 수 있는데, Chrome은 애니메이션 계산이 끝난 후, 애니메이션 종료 화면이 그려지기 전에 재계산 작업을 시작하도록 허용하기 때문입니다.