해결책
Elevator.js는 누구나 겪는 어색한 순간에 대한 농담에서 시작되었다. Tim Holman의 프로젝트 페이지는 독자가 긴 페이지를 끝까지 스크롤하면 무슨 일이 일어나는지 물었다. '와, 이렇게 많이 스크롤했네... 맨 위로 돌아가려면 한참 걸리겠는데'라는 물음이었고, '맨 위로' 버튼이 기능적이긴 하지만 그 순간을 그냥 건너뛴다는 점을 지적했다. 그의 답은 맨 위로 버튼을 엘리베이터라고 부르고, 엘리베이터처럼 작동하게 만드는 것이었다.
이 라이브러리는 약속을 작고 기술적인 범위로 유지한다. jQuery 없이 독립적으로 작동하며 오디오와 스크롤만 처리한다. 개발자가 메인 오디오 파일과 종료 오디오 파일을 지정하면, 버튼을 클릭할 때 엘리베이터 음악이 시작되고 부드럽게 맨 위로 스크롤한 뒤 마지막 딩 소리가 재생된다. 옵션으로 사용자 지정 대상 요소, 고정 재생 시간, 세로 패딩, 콜백을 설정할 수 있으며, 코드는 GitHub와 NPM에서 MIT 라이선스로 제공되고 데모 오디오는 Pond5에서 라이선스를 받았다.
묘미는 프로젝트 페이지가 곧 데모라는 점이다. 방문자는 어색함을 이야기하는 문구를 따라 아래로 스크롤한 뒤 엘리베이터 버튼을 클릭해 다시 위로 올라간다. 농담은 설명되는 것이 아니라 직접 경험된다. 이 페이지가 2015년 4월 21일 Hacker News에 올랐을 때, 댓글 작성자들은 웃음이 났다고 말했고 음악과 자동 재생에 대해 의견을 나눴으며 13층을 건너뛰는 기능 같은 추가 사항을 제안했다.
성과
유틸리티의 순간 자체를 제품으로 삼으라. 맨 위로 돌아가는 일을 기능적이면서도 재미있는 엘리베이터 탑승으로 만들라
통한 이유
기능은 그대로 유지된다. 여전히 맨 위로 스크롤하며, 라이브러리는 독립적으로 바로 적용할 수 있어 연출이 장식하는 유틸리티를 결코 포기하지 않는다.
경험 자체가 설득력이 있다. 엘리베이터를 클릭한 독자는 농담을 직접 겪게 되며, 그래서 댓글 작성자들이 웃음이 났고 빨리 써보고 싶다고 말한 것이다.
작은 MIT 코드와 NPM 패키지는 시도해 볼 비용을 낮췄고, 스타일과 오디오를 통합하는 사람에게 맡김으로써 각 사이트가 탑승을 자기만의 것으로 만들 수 있었다.
그 순간은 보편적이었다. 모든 긴 페이지에는 지루하게 다시 올라가는 과정이 있으므로, 그것을 재미있게 만든 해결책은 어디서든 수용층이 있었다.
일상적인 행동이 죽은 시간처럼 느껴질 때 작은 연출을 더하라. 기능을 그대로 유지하는 즐거움은 잡일을 사람들이 공유하는 순간으로 바꾼다
그 후
2015년 4월 21일 Hacker News 스레드는 438점과 66개의 댓글을 모았고, 대부분은 농담의 핵심을 짚는 것이었다. 스피커를 음소거해 둔 사람들은 스레드를 읽고 나서야 음악을 알게 되었고, 일부는 트랙 추가나 13층 건너뛰기를 제안했으며, 한 사람은 탭을 비활성 상태로 두면 곡이 계속 재생될 수 있다고 지적했다. 이 프로젝트는 작은 오픈소스 결과물로 남았고(페이지와 저장소는 2026년 9월에도 여전히 살아 있었다), Elevator.js는 사업이라기보다 유틸리티 상호작용에 즐거움을 더한 사례로 자주 인용되었다.
근거 확인하기
출처
- Elevator.js - Hacker News Hacker News · news.ycombinator.com ·
- Elevator.js Tim Holman (tholman.com) · tholman.com
- tholman/elevator.js - finally, a 'back to top' button that behaves like a real elevator GitHub · github.com